Existe el siguiente código:
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
Quiero probarlo a través de RSpec. Mi codigo es:
it 'raises CarBrandNotFound exception' do
get :index, car_brand_id: 0
expect(response).to raise_error(Errors::CarBrandNotFound)
end
CarBrand con id igual a 0 no existe, por lo tanto, mi código de controlador genera Errores :: CarBrandNotFound, pero mi código de prueba me dice que no se generó nada. ¿Cómo puedo arreglarlo? ¿Qué hago mal?
ruby-on-rails
ruby
rspec
malcoauri
fuente
fuente

get :index, car_brand_id: 0mismo no genera un error.Utilizar en
expect{}lugar deexpect().fuente
( )en{ }! Muchas graciasget :indexnunca generará una excepción; más bien, establecerá la respuesta como un error 500 de alguna manera, como lo haría un servidor real.En su lugar, intente:
it 'raises CarBrandNotFound exception' do controller.params[:car_brand_id] = 0 expect{ controller.car_brand }.to raise_error(Errors::CarBrandNotFound) endfuente