我正在尝试为Route条目编写测试方法,在我的路由配置中,有很多条目用于不同的操作。我正在使用MvcContrib.TestHelper
进行测试。我是MVC和TDD的新手。请帮我解决这个问题。我的测试用例失败了,我该怎么办才能通过。
路线录入
routes.MapRoute(
name: "X1Details",
url: "X1/{X1ID}",
defaults: new { controller = "X1", action = "Index", X1ID = "X1ID" }
);
X1Controller
public ActionResult Index(int? instanceID = 0, string InfoMsg ="")
{
}
测试方法
[Test Method]
public void Should_Route_X1Index()
{
"~/X1/"
.ShouldMapTo<X1Controller>(action => action.Index(null, ""));
}
错误
测试方法 XXX.Tests.MVCContibRouteMapTest.Should_Route_X1IndexOf 抛出异常:MvcContrib.TestHelper.AssertionException:值为 参数'InfoMsg'不匹配:预期''但是'';没有价值 在名为'InfoMsg'的路由上下文操作参数中找到 - 确实如此 您的匹配路由包含一个名为“InfoMsg”的标记?
提前致谢。
答案 0 :(得分:1)
我发现这种方法可以使你的控制器保持不变
[Test Method]
public void Should_Route_X1Index()
{
var routeData = "~/X1/".Route();
routeData.Values["InfoMsg "] = "";
routeData.Values["instanceID"] = "0";
routeData.ShouldMapTo<X1Controller>(action => action.Index(0, ""));
}
答案 1 :(得分:0)
默认值不适用于MVCContrib助手。您可以像这样修改控制器操作:
public ActionResult Index(int? instanceID, string InfoMsg)
{
...
}
然后:
"~/X1".ShouldMapTo<X1Controller>(action => action.Index(null, null));