Все,
Возникли некоторые проблемы с тестом, похожие на следующие:
it "does something" do
controller.should_receive(:some_method).once
expect {
post :create, some_params_hash, some_session_hash
}.to change(Something, :count).by(1)
end
Контроллер на стороне рельсов - грубый пример:
class SomethingsController
before_filter :some_method
def create
respond_with Something.create params[:something]
end
def some_method
puts 'some_method'
end
end
Это все хорошо и прекрасно работает, если я удаляю ожидание controller.should_receive. Если я оставлю ожидание на месте — тест провалится.
Странно то, что он не терпит неудачу из-за неудовлетворенного ожидания — на самом деле, похоже, он соответствует ожиданию should_receive(:some_method) — просто создание записи и последующая оценка изменения завершаются ошибкой.
Итак - вопрос:
Это правильный способ указать ожидания от контроллера, который вызывается как часть этого теста??
Спасибо за любую помощь!