В моем приложении Asp.net MVC у меня есть два метода на контроллере, один для того, когда пользователь впервые появляется в представлении, а затем один, когда они отправляют форму в указанном представлении.
public ActionResult Foo() {}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Foo(string id, Account accountToFoo) {}
Во втором действии есть пользовательский механизм связывания моделей, который собирает объект учетной записи, над которым я работаю, хотя это на самом деле не важно. Все это прекрасно работает при локальном тестировании на сервере.
Мы стараемся хорошо писать модульные тесты, чтобы проверить правильность маршрутизации всех наших представлений, в том числе HTTP POST. Для этого мы использовали тестовый помощник mvccontrib.
Тестирование получилось очень простым
"~/account/foo/myusername".
Route().
ShouldMapTo<AccountController>(c => c.Foo("myusername"));
У меня вопрос при тестировании POST-маршрутов. Как мне написать лямбда-код, который я бы использовал, чтобы убедиться, что сообщение получает точные значения, аналогично приведенному выше тесту GET?
Для POST это выглядит примерно так:
"~/account/foo".
WithMethod(HttpVerbs.Post).
ShouldMapTo<AccountController>(a => something_something);
Это часть чего-то в моей лямбде, с которой у меня проблемы. Использование произвольных значений не работает («a => a.Foo (0, new Account ()»). Как я могу указать ожидаемые значения как часть теста?
РЕДАКТИРОВАТЬ Я надеялся, что в Moq есть лямбды для таких выражений, как foo.Setup (s => s.Foo (It.IsAny (), It.Is (i =). > i> 32)) и т. д. Даже я должен явно указать значения, это выполнимо - я просто не могу добиться желаемой структуры для передачи этих явных значений.