Создание MVCContrib TestHelper работать с действиями, которые получают автоматические данные маршрута на объекты
-
23-09-2019 - |
Вопрос
Это 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)
Он работает отлично - Framework MVC знает, чтобы сопоставить SearchQuery и ListingType на два свойства объекта QueryParameters с одинаковыми именами.
Моя проблема - модульное тестирование. Я использую проект MVCContrib и люблю метод shopmapto:
[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 Autompoping of Properties Rocks, но я надеюсь, что есть какой -то способ, которым я смогу сделать это также работать MVCContribs.
Решение
Прошло много времени с тех пор, как я посмотрел на этот код, но я считаю, что он делает вызов. Для примитивных типов это просто, но для вашего объекта параметров попробуйте реализовать переопределение равных и протестировать равенство каждого из свойств.