我正在学习为我的ASP.NET MVC添加单元测试,当我了解到模拟和现在存在的不同框架时。
在查看SO之后,我发现MOQ似乎是最容易上手的。 目前,我正在尝试模拟Request.ServerVariables,因为在阅读了这篇文章之后,我了解到将它们抽象成属性会更好。
因此:
但我很难学习如何正确地模拟这个过程。我有一个主页控制器的ActionResult函数,它获取用户服务器信息并继续创建一个表单来获取用户的信息。
我尝试使用hanselman's mvcmockhelpers class,但我不确定如何使用它。
这是我目前的进展...
在查看SO之后,我发现MOQ似乎是最容易上手的。 目前,我正在尝试模拟Request.ServerVariables,因为在阅读了这篇文章之后,我了解到将它们抽象成属性会更好。
因此:
/// <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函数以确保所有模拟都已正确设置?