Возврат другого кода статуса HTTP для тестирования - PullRequest
0 голосов
/ 22 ноября 2011

Я пишу некоторые интеграционные тесты для веб-приложения MVC, которые включают запуск HTTP-сообщения и получение запросов в экземпляре приложения, которое я запускаю с помощью IIS Express.

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

В настоящее время я проверяю ModelState в базовом классе моего контроллера в событии OnActionExecuted и устанавливаю код состояния в 202 (Принят, но все еще требует обработки):

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
     if (!ModelState.IsValid)
     {
          Response.StatusCode = 202;
     }

     base.OnActionExecuted(filterContext);
}

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

Каково мнение людей об этом проекте? И будет ли это иметь какие-либо неблагоприятные последствия?

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Почему бы вам не проверить только контроллер?Не нужно проверять часть стека IIS.

Если вы действительно хотите это сделать, я думаю, что скрытые поля, заполненные данными, которые вы хотите проверить, являются лучшим подходом.

0 голосов
/ 22 ноября 2011

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

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

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
    if (!ModelState.IsValid)
    {
        Response.AddHeader("Validation", "Failed");
    }

    base.OnActionExecuted(filterContext);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...