Es gibt folgenden Code:
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
Ich möchte es über RSpec testen. Mein Code lautet:
it 'raises CarBrandNotFound exception' do
get :index, car_brand_id: 0
expect(response).to raise_error(Errors::CarBrandNotFound)
end
CarBrand mit einer ID von 0 existiert nicht, daher löst mein Controller-Code Errors :: CarBrandNotFound aus, aber mein Testcode sagt mir, dass nichts ausgelöst wurde. Wie kann ich es reparieren? Was mache ich falsch?
ruby-on-rails
ruby
rspec
Malcoauri
quelle
quelle
get :index, car_brand_id: 0
selbst löst keinen Fehler aus.Verwenden Sie
expect{}
anstelle vonexpect()
.quelle
( )
in{ }
! Vielen Dankget :index
wird niemals eine Ausnahme auslösen - es wird eher die Antwort auf einen 500-Fehler setzen, wie es ein echter Server tun würde.Versuchen Sie stattdessen:
it 'raises CarBrandNotFound exception' do controller.params[:car_brand_id] = 0 expect{ controller.car_brand }.to raise_error(Errors::CarBrandNotFound) end
quelle