Cześć,
Mam pytanie do osób, które znają temat testów jednostkowych. Z tego co na szybko się zorientowałem, takie testy wprowadza się głównie dla prostych funkcjonalności, nie stosuje się ich jeżeli mamy do czynienia z połączeniem z BD (DbContext).
W projekcie, który prowadzę wspólnie ze znajomymi architektura aplikacji na tą chwilę wygląda tak, że w kontrolerach mamy głównie metody GET i POST. Get wyświetla nam odpowiedni widok, natomiast metoda POST wysyła zapytanie do bazy danych. Nie ma obecnie w tej chwili w tym projekcie żadnych "prostych" metod typu: jeśli warunek jest spełniony to true, a jeśli nie to false.
Proszę o informację w jaki sposób (i czy w ogóle jest to możliwe) napisać testy jednostkowe do tego typu metod. Poniżej kilka przykładowych:
- Logowanie
[HttpPost]
public async Task<IActionResult> Login(LoginViewModel model)
{
//login functionality
var user = await _userManager.FindByNameAsync(model.Email);
if (user != null)
{
//sign in
var signInResult = await _signInManager.PasswordSignInAsync(user, model.Password, false, false);
if (signInResult.Succeeded)
{
return RedirectToAction("Index", "Home");
}
}
return RedirectToAction("Index", "Home");
}
- Weryfikacja eMail
public async Task<IActionResult> VerifyEmail(string userId, string code)
{
var user = await _userManager.FindByIdAsync(userId);
if (user == null) return BadRequest();
var result = await _userManager.ConfirmEmailAsync(user, code);
if (result.Succeeded)
{
return View();
}
return BadRequest();
}
- Wylogowanie
public async Task<IActionResult> LogOut()
{
await _signInManager.SignOutAsync();
return RedirectToAction("Index", "Home");
}