Это 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 и listType с двумя свойствами объекта 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)
, который сработал (очевидно, что unittest попытается сопоставить Поиск с двумя параметрами (строками) вместо этого одного объекта.
Кто-нибудь имеет представление о том, как решить проблему, если не считать возврата всех свойств в качестве параметров. Mvc autopping свойств рушится, но я надеюсь, что есть какой-то способ, с помощью которого mvccontribs testhelper может работать и с этим.