ruby-on-rails - tutorial - ruby on rails test




¿Cómo probar el aumento de excepciones en Rails/RSpec? (2)

Para poder especificar el manejo de errores, sus expectativas deben establecerse en un bloque; evaluar un objeto no puede generar un error.

Así que quieres hacer algo como esto:

expect {
  get :index, car_brand_id: 0
}.to raise_error(Errors::CarBrandNotFound)

Ver Esperar error para más detalles.

Sin embargo, estoy un poco sorprendido de que no obtengas ninguna excepción en los resultados de tus especificaciones.

Hay 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 código 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, el código de mi controlador genera Errores :: CarBrandNotFound, pero mi código de prueba me dice que no se generó nada. ¿Cómo puedo arreglarlo? ¿En qué me equivoco?


Use expect{} lugar de expect() .





rspec