Как выполнить модульное тестирование или интеграционный тест для 404 - Не найдено? - PullRequest
4 голосов
/ 25 января 2011

Моя команда пишет приложение ASP.Net MVC 2 для веб-хостинга с управлением контентом на основе архитектуры S # arp.Я использую SpecFlow и WatiN для интеграционного тестирования и NUnit для модульного тестирования.

У меня есть фабрика пользовательских контроллеров, которая находит страницу в базе данных на основе URL-адреса и сайта, а затем загружает соответствующий контроллер идействие.Он также загружает контроллер ошибок, когда страница (или сайт) не найдена в базе данных.

Я хочу написать модульный тест или интеграционный тест, который проверяет правильность отображения страницы 404, когда URL недействителен,WatiN не может проверить заголовок ответа, поэтому он не может точно гарантировать, что была загружена фактическая страница 404.Это может исключить интеграционный тест в качестве решения.

Я новичок в TDD и BDD, поэтому я могу упустить что-то очевидное.Кроме того, я участвую в ретроспективном тестировании этого проекта, что делает его гораздо более сложным.

Заранее спасибо.

1 Ответ

8 голосов
/ 25 января 2011

Обычно, когда мы пишем сценарии BDD, мы пишем их с точки зрения пользователя.

Если пользователь обычный человек, им, вероятно, не слишком важно, является ли заголовок подлинным 404. Они предпочли бы страницу, дающую им ясное и полезное сообщение. Напишите сценарий, чтобы проверить наличие понятного и полезного сообщения.

Given no section on unicorns exists
When the user browses for horses
And changes the url to be about unicorns
Then the user should be told that no such page exists.

BDD на самом деле не о тестировании. Речь идет о разговорах, которые позволят вам обнаружить другие вещи, о которых вы не задумывались, и выработке общего понимания того, что должно произойти. Например, что происходит, когда обычный пользователь пытается получить доступ к странице администратора? Должны ли они получить «доступ запрещен» или просто не знать, что страница есть? Что делать, если страница удалена? Эти обсуждения более полезны, чем пытаться все уладить.

Если ваш 404 связан с определенным сообщением для пользователя, то вы можете просто выполнить модульное тестирование на соответствие соответствующего ответа. Это резко снизит вероятность случайной отправки неправильного кода с сообщением в будущем, и вы сможете сосредоточиться на реальной выгоде.

...