这是 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 项目并喜欢 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 也可以使用它。