Вот такой код:
def index
@car_types = car_brand.car_types
end
def car_brand
CarBrand.find(params[:car_brand_id])
rescue ActiveRecord::RecordNotFound
raise Errors::CarBrandNotFound.new
end
Хочу протестировать через RSpec. Мой код:
it 'raises CarBrandNotFound exception' do
get :index, car_brand_id: 0
expect(response).to raise_error(Errors::CarBrandNotFound)
end
CarBrand с идентификатором, равным 0, не существует, поэтому мой код контроллера вызывает Errors :: CarBrandNotFound, но мой тестовый код сообщает мне, что ничего не было поднято. Как я могу это исправить? Что я не так?
ruby-on-rails
ruby
rspec
малкоаури
источник
источник
get :index, car_brand_id: 0
себе не вызывает ошибки.Используйте
expect{}
вместоexpect()
.источник
( )
в{ }
! Большое спасибоget :index
никогда не вызовет исключения - он скорее установит ответ как ошибку 500, как это сделал бы настоящий сервер.Вместо этого попробуйте:
it 'raises CarBrandNotFound exception' do controller.params[:car_brand_id] = 0 expect{ controller.car_brand }.to raise_error(Errors::CarBrandNotFound) end
источник