Следует ли использовать следует?
В настоящее время мы используем мыслиботы в основном для спецификации функциональности наших моделей рельсов.
Похоже, что многие из соответствий, которые должны быть предоставлены, на самом деле тестируют поведение рельсов. Например
describe Blog do
it { should have_many(:posts) }
end
просто проверяет, что этот код из определения модели
class Blog < ActiveRecord::Base
has_many :posts
end
на самом деле работает.
Разве это не тестирование поведения рельсов (в отличие от поведения наших моделей)? Разве это не то, что следует избегать вообще?
1 ответ
Этот вид вопроса может легко перерасти в пламенную войну, но в любом случае я дам свои два цента.
Большую часть времени я пользуюсь устройствами для сравнения, и я согласен с вами, что такие тесты на первый взгляд могут показаться излишними. Так почему я продолжаю использовать их?
Когда вы выполняете BDD, вы не тестируете отдельные модули, но на самом деле вы тестируете поведение объекта. На мой взгляд, зная, что Blog
сущность реагирует на posts
метод с коллекцией многих posts
является частью поведения Blog
учебный класс. Поэтому я хочу проверить это.
Кроме того, если вы строго следуете циклу TDD, теоретически вы не можете добавить
has_many :posts
линия, не нарушая принципа, что вы должны сначала написать тест.
Как и во многих других областях, окончательный ответ зависит от проекта. Если у вас большой проект со многими моделями (или проект, который таковым становится), вы действительно можете протестировать интерфейсы.
Если у вас просто есть Post
модель с Author
Это может выглядеть как излишество. Но в этом случае это обойдется вам примерно в 4 строки теста... так почему бы и нет?