Предоставить явные имена представлений при модульном тестировании действия контроллера? - PullRequest
2 голосов
/ 20 мая 2009

Стивен Вальтер рекомендует указывать явные имена представлений, когда вы хотите выполнить их модульное тестирование.

Я определенно хочу их протестировать, но мне любопытно, действительно ли эта рекомендация остается в силе с выпуском 1.0.

В учебнике NerdDinner тесты просто проверяют, является ли viewResult нулевым. Они явно не указывают viewName, который поэтому пуст. Я хотел бы удалить имена представлений, представленные в виде строк в реальном коде, но эти проверки кажутся мне менее полезными ... (Я даже не могу вспомнить сценарий, в котором viewResult возвращает null?!)

Ответы [ 2 ]

3 голосов
/ 20 мая 2009

Здесь действительно два отдельных вопроса. Во-первых, изменилось ли что-либо в структуре MVC, так как Стивен Вальтер написал рекомендацию, которая изменит рекомендацию. Ответ на этот вопрос «нет»

Второй вопрос заключается в том, является ли рекомендация хорошей практикой. Я собираюсь не согласиться со Стивеном Уолтером здесь. Его пример немного странный. Его модульный тест для действия «Индекс» пытается утверждать, что действие возвращает явное имя представления, когда оно явно этого не делает. Если бы я написал этот модульный тест, я бы вместо этого утверждал, что имя представления равно пустой строке. Тогда юнит тест пройдёт. Вместо того, чтобы утверждать, что действие определяет представление определенного имени, модульный тест тогда фактически подтвердит, что действие указывает, что представление имеет то же имя, что и действие. Это законная вещь для проверки.

Одним из руководящих принципов, лежащих в основе MVC, является соглашение о конфигурации. Другими словами, вам не нужно указывать что-либо, что является просто обычным значением по умолчанию. Значение по умолчанию для имени представления совпадает с именем действия. Документированное поведение WebFormsViewEngine заключается в поиске представления с тем же именем, что и действие, если не указано отдельное имя представления. Следовательно, не указывать имя представления - это то же самое, что указывать «использовать имя представления по умолчанию».

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

0 голосов
/ 20 мая 2009

Предоставление явных имен представлений имеет значение, если контроллер может возвращать различные представления. Затем вы можете тестировать контроллер, который возвращает тот, который должен вернуть по имени. В противном случае - я не вижу смысла их использовать.

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