使mvccontrib testhelper与使路由数据自动化到对象的操作一起工作

时间:2010-01-29 12:06:43

标签: asp.net-mvc mvccontrib mvccontrib-testhelper

这是ASP.NET MVC v1(尚未使用v2)

我有一个这样的路线条目:

            routes.MapRoute(
            "Srp",
            "soeg-{searchQuery}/{listingType}",
            new { controller = "Srp", action = "Search", listingType = string.Empty },
            new { listingType = "privat|forhandler|"}
            );

以及与之匹配的操作:

        public ActionResult Search(QueryParameters queryParameters)

它完美运行 - mvc框架知道将searchQuery和listingType映射到具有相同名称的QueryParameters对象的两个属性。

我的问题是单元测试。我正在使用Mvccontrib项目和LOVING ShouldMapTo方法:

        [Test]
    public void RegisterSrpRoutes_SoegWithKeywordAndValidListingType_ShouldMapCorrectly()
    {
        var queryParameters = new QueryParameters {SearchQuery = "hest", ListingType = "privat"};
        "~/soeg-hest/privat".ShouldMapTo<SrpController>(controller => controller.Search(queryParameters));
    }

虽然不起作用!我过去常常在我的动作上有这样的参数:

        public ActionResult Search(string searchQuery, string listingType)

有效(显然单元测试会尝试使用两个参数(字符串)而不是这一个对象映射到搜索。

有没有人知道如何解决问题,而不是回到将所有属性都写为参数。 mvc属性的自动化摇滚,但我希望有一些方法我可以让mvccontribs testhelper也可以使用它。

1 个答案:

答案 0 :(得分:1)

我看了这段代码已经有一段时间了,但我相信它会对您发送的参数进行.Equals调用。对于原始类型,这很容易,但对于参数对象,尝试实现Equals重写并让它测试每个属性的相等性。