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: 0
mismo no genera un error.Utilizar en
expect{}
lugar deexpect()
.fuente
( )
en{ }
! Muchas graciasget :index
nunca 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) end
fuente