Проблема с MvcContrib TestHelper Свободное тестирование маршрутов и определенные HttpVerbs - PullRequest
2 голосов
/ 11 ноября 2010

Я пытаюсь использовать беглый API тестирования MvcContrib TestHelper, но я вижу странное поведение.Метод расширения .WithMethod (HttpVerb), похоже, не выполняется должным образом.Вот мой контроллер, показывающий (2) действия (с одинаковыми именами), которые принимают разные HttpVerbs:

[HttpGet]
public ActionResult IdentifyUser()
{
    return View(new IdentifyUserViewModel());
}

[HttpPost]
public ActionResult IdentifyUser(IdentifyUserInputModel model)
{
    return null;
}

А вот тест, который должен соответствовать действию с атрибутом [HttpPost]:

MvcApplication.RegisterRoutes(RouteTable.Routes);

var routeData = "~/public/registration/useridentification/identifyuser"
    .WithMethod(HttpVerbs.Post)
    .ShouldMapTo<UserIdentificationController>(x => x.IdentifyUser(null));

Несмотря на то, что POST HttpVerb указан в моем тесте, он всегда направляется к методу HttpGet. Я даже могу прокомментировать действие, принимающее HttpPost в моем контроллере, и все еще иметь тестовый проход!

Есть ли что-то, что я здесь упускаю?

1 Ответ

0 голосов
/ 12 ноября 2010

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

[TestFixtureSetUp]
public void TestFixtureSetUp()
{
    RouteTable.Routes.Clear();
    new RouteConfigurator().RegisterRoutes(RouteTable.Routes);
}

Я предполагаю, что, поскольку RouteTable обрабатывает их статически, вы можете столкнуться с проблемами, если не добавляете, не очищаете или добавляете слишком много маршрутов для ваших тестовых прогонов.

...