Как я могу улучшить изоляцию для этого спец контроллер?


Так что я делаю вещи БДД образом, написание первой функции, затем перейти к написанию спецификаций, чтобы добавить больше деталей в смесь, как я двигаться вниз слоями.

Одна вещь, которая беспокоит меня, но это не большая проблема, заключается в том, что когда я дошел до части контроллера стека, у меня вызовов пользователя, и модель todo в спецификацию контроллера.

Это хорошо и нормально? Или я должен быть раскорчевка эти вещи?

describe TodosController do
  let(:user) { Factory(:user) }

  describe "post 'create'" do
    lambda {
      post :create
    }.should change(user.todos, :count).by(1)
  end 
end


274
2
задан 7 декабря 2011 в 11:12 Источник Поделиться
Комментарии
3 ответа

Это прекрасно, чтобы проверить, как контроллеры изменяют модели.

1
ответ дан 23 января 2012 в 06:01 Источник Поделиться

Вы должны не огрызок что у вас нет контроля, поскольку позже изменения вещи вышли из-под контроля сделает ваши тесты ломкими, а стаб в этом случае, поскольку у вас есть полный контроль моделей

0
ответ дан 7 декабря 2011 в 12:12 Источник Поделиться

Лично я не большой поклонник издевательски, если это возможно, чтобы проверить конкретный кусок кода без него. Насмешливый занимает больше времени, и я нахожу, что мои тесты, как правило, труднее поддерживать, потому что то, что я издевался изменения я должен пойти и изменить все мои глумится во всех моих тестах, или даже хуже мои тесты проходят, и я в конечном итоге с ошибками. Я уверен, что есть некоторые чисто рубистов, что там со мной не согласятся, но я делал это в обе стороны и не собираюсь возвращаться к глумится. Один недостаток не используя глумится, что я нашел то, что мои тесты, как правило, медленнее, потому что я использую полностью увлажненной модели рельсы с обратные вызовы вместо тупой mock объектов.

0
ответ дан 13 декабря 2011 в 02:12 Источник Поделиться