【发布时间】:2011-02-15 17:59:19
【问题描述】:
我刚开始学习为我的 asp.net mvc 进行单元测试,当时我开始了解 mock 和现在存在的不同框架。
检查 SO 后,我发现 MOQ 似乎是最容易接受的。 到目前为止,我一直在尝试模拟 Request.ServerVariables,因为 after reading this post,我了解到最好将它们抽象为属性。
这样:
/// <summary>
/// Return the server port
/// </summary>
protected string ServerPort
{
get
{
return Request.ServerVariables.Get("SERVER_PORT");
}
}
但是我很难学习如何正确地模拟这个。 我有一个家庭控制器 ActionResult 函数,它获取用户服务器信息并继续创建一个表单来获取用户信息。
我尝试使用hanselman's mvcmockhelpers class,但我不知道如何使用它。
这就是我目前所拥有的......
[Test]
public void Create_Redirects_To_ProductAdded_On_Success()
{
FakeViewEngine engine = new FakeViewEngine();
HomeController controller = new HomeController();
controller.ViewEngine = engine;
MvcMockHelpers.SetFakeControllerContext(controller);
controller.Create();
var results = controller.Create();
var typedResults = results as RedirectToRouteResult;
Assert.AreEqual("", typedResults.RouteValues["action"], "Wrong action");
Assert.AreEqual("", typedResults.RouteValues["controller"], "Wrong controller");
}
问题:
- 到目前为止,我仍然是 null 我运行时出现异常错误 测试。那么我在这里缺少什么?
- 如果我使用 mvcmockhelpers 上课,我怎么还能打电话 request.verifyall 函数确保 所有的模拟都正确设置了吗?
【问题讨论】:
标签: asp.net-mvc unit-testing moq