Это не очень хорошее решение для начала. В Rails вы хотите использовать rescue_from
для обработки распространенных ошибок на уровне контроллера.
class ApplicationController
rescue_from ActiveRecord::RecordNotFound, with: :not_found
def not_found
respond_to do |format|
format.json { head :404 }
end
end
end
Это позволяет вам использовать наследование DRY вашего кода.
render json: { error: 'Failed') }
Является ли огромный анти-паттерн. Если запрос не прошел, вы должны сообщить об этом клиенту, отправив правильный код состояния HTTP. Не изобретай велосипед. Особенно, если ваше решение - квадратное колесо. Если ваш JS использует обезьяны с ответом json, чтобы увидеть, был ли запрос успешным или нет, вы делаете его неправильно.
Если вы хотите проверить, что ваш контроллер обрабатывает отсутствующий ресурс правильно вы бы сделали:
let(:people) { create(:people) }
let(:people_id) { people.id }
let(:user) { people}
it "returns the correct response code if the person cannot be found" do
get '/people/notarealid'
expect(response).to have_http_status :not_found
end
Это не использует заглушки и фактически проверяет реализацию.