【发布时间】:2009-04-07 13:07:20
【问题描述】:
我有一个方法可以接收一个对象并将其保存到数据库中。但是,在我保存对象之前,我会执行以下操作...
(伪代码)
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 在这里有多重要???
【问题讨论】:
-
3 票投给 moq foo 服务至今...
-
是的 :) 但我不知道如何以编程方式执行此操作:(
标签: asp.net-mvc unit-testing moq