Должен ли я издеваться над моей моделью в тестах контроллера рельсов? - PullRequest
4 голосов
/ 27 ноября 2009

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

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

Спасибо.

UPDATE:

Получив множество противоречивых мнений по этому поводу, кажется, что все сводится к тому, какую философию вы принимаете.

Сообщество Rspec, по-видимому, использует сильно заглушенные зависимости для достижения изоляции тестируемого объекта. Приемочные тесты (традиционно называемые интеграционными тестами;) используются для обеспечения работы ваших объектов со своими зависимостями времени выполнения.

Сообщество musta / Test :: Unit, по-видимому, старается избегать окурков в максимально возможной степени. Это позволяет вашим тестам подтвердить, что тестируемый объект действительно работает с его зависимостями.

Это видео суммирует это красиво: http://vimeo.com/3296561

Ответы [ 3 ]

2 голосов
/ 27 ноября 2009

Если вы используете Мокко, это должно сделать следующее.

Mocha::Configuration.prevent(:stubbing_non_existent_method)
2 голосов
/ 27 ноября 2009

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

0 голосов
/ 02 февраля 2017

Во время написания юнит-тестов вся цель должна состоять в том, чтобы тестировать только этот юнит. Рассмотрим модель как единое целое и покройте ее отдельно. Изменение в модели не должно напрямую влиять на охват модульных испытаний контроллера.

...