Проблема в том, что вы вызываете тестируемый метод в тематическом блоке.
subject {controller.send(:update_person, 3)}
На самом деле он вызывается перед запуском примера и перед блоком before
.
context 'not found the proposals' do
before do
allow(subject).to receive(:handle_exceptions)
end
it 'calls handle_exceptions' do
controller.send(:update_person, "NOT A VALID ID")
expect(subject).to have_received(:handle_exceptions)
end
end
Но что касается тестов go, то это не хорошо. Вы тестируете реализацию update_person
, а не реальное поведение. И вы вызываете метод с помощью update_person.send(:update_person, 3)
, вероятно, для тестирования частного метода .
Вместо этого вы должны проверить, что ваш контроллер возвращает код ответа 404 при попытке обновления с недопустимым идентификатором , Кроме того, почему вы настаиваете на заглушении Person.find
, остается загадкой, поскольку вы можете вызвать исключение, просто передав неверный идентификатор. Только заглушка, когда вам действительно нужно.