У меня есть метод, который принимает объект и сохраняет его в базе данных. Но прежде чем сохранить объект, я делаю следующее ...
(код псевдо)
if (IsAuthenticated)
{
foo.UserId = AuthenticatedUser.Id;
}
else
{
foo.AnonEmail = "Jon@World-Domination";
foo.AnonName = "Jon Skeet";
}
try
{
_fooService.Save(foo);
}
catch
{
// Some view, with error stuff now added to
return View(...); ViewData.ModelState.
}
// all good, redirect to the proper next view.
return RedirectToAction(...);
Этот код работает нормально, но я не уверен, как написать два модульных теста для успеха.
а) Пользователь аутентифицирован с действительными данными
б) Пользователь не аутентифицирован с действительными данными.
Причина, по которой я не уверен, что делать, заключается в том, что оба сценария возвращают один и тот же объект представления RedirectToAction (..). Так что я могу успешно это проверить ... но он не говорит мне, содержит ли сохраненный объект аутентифицированный идентификатор пользователя или информацию anon. Как будто я хочу, чтобы первый юнит-тест сказал
- moq up аутентифицированный пользователь
- метод вызова
- проверка, если результатом является RedirectToActionView
- проверить, содержит ли сохраненный объект foo идентификатор пользователя moq'd.
мысли
Обновление
Распространенным предложением является издевательство над fooService. В настоящее время я использую Dependency Injection и Moq, так может ли кто-нибудь показать мне, как я буду использовать Moq? Я не уверен, насколько важен здесь DI ???