我有一个方法可以接收一个对象并将其保存到数据库中。但是,在我保存对象之前,我执行以下操作...
(伪代码)
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(...);
该代码工作正常,但我不确定如何编写两个单元测试以获得成功。a) 用户使用有效数据进行身份验证 b) 用户未使用有效数据进行身份验证。
我不确定该怎么做的原因是,两种情况都返回相同的 RedirectToAction(..) 视图对象。所以我可以成功测试..但它没有告诉我保存的对象是否包含经过身份验证的用户 ID 或匿名信息。就像我想要第一个单元测试说
- 起订量为经过身份验证的用户
- 调用方法
- 测试结果是否为 RedirectToActionView
- 测试持久化的 foo 对象是否包含 moq 的用户 ID。
想法?
更新
常见的建议是我模拟 fooService。我目前正在使用依赖注入和起订量,所以有人可以告诉我如何使用起订量吗?不过,我不确定DI在这里有多重要???