0

我正在尝试为 Route 条目编写测试方法,并且在我的路由配置中有很多用于不同操作的条目。我正在使用 MvcContrib.TestHelper测试。我是 MVC 和 TDD 的新手。请帮我解决这个问题。我的测试用例失败了,我该怎么做才能让它通过。

路线入口

 routes.MapRoute(
            name: "X1Details",
            url: "X1/{X1ID}",
            defaults: new { controller = "X1", action = "Index", X1ID = "X1ID" }
            );

X1控制器

   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”的标记?

提前致谢。

4

2 回答 2

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, ""));
}
于 2012-09-24T16:39:50.990 回答
0

默认值不适用于 MVCContrib 助手。您可以像这样修改控制器操作:

public ActionResult Index(int? instanceID, string InfoMsg)
{
    ...
}

接着:

"~/X1".ShouldMapTo<X1Controller>(action => action.Index(null, null));
于 2012-09-24T16:08:18.580 回答