Создание MVCContrib TestHelper работать с действиями, которые получают автоматические данные маршрута на объекты

StackOverflow https://stackoverflow.com/questions/2161741

Вопрос

Это 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.

Это было полезно?

Решение

Прошло много времени с тех пор, как я посмотрел на этот код, но я считаю, что он делает вызов. Для примитивных типов это просто, но для вашего объекта параметров попробуйте реализовать переопределение равных и протестировать равенство каждого из свойств.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top