Следует ли использовать следует?

В настоящее время мы используем мыслиботы в основном для спецификации функциональности наших моделей рельсов.

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

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 строки теста... так почему бы и нет?

Другие вопросы по тегам