2012-04-18 7 views
5

Estoy tratando de pasar de responder a responder en los controladores de rieles. Todo va bien, a excepción de las pruebas de salvaciones no válidas en las especificaciones del controlador. He aquí un ejemplo:Los rieles responden con los controladores Rspec: Prueba de la actualización incorrecta

describen myController hacer ...

describe "PUT update" do 
    context "with invalid attributes" do 
     it "should re-render the edit page" do 
     style = stub_model(Style) 
     Style.stub(:find) { style } 
     Style.any_instance.stub(:save).and_return(false) 
     put :update 
     response.should render_template(:edit) 
     end 
    end 
    end 
end 

Esto funciona muy bien con mi viejo estilo de acción de actualización respond_to, pero con respond_with, me sale

Failure/Error: response.should render_template("edit")

Por lo tanto, en corto - ¿cómo pruebo esto? ... ¿O debería asumir que render_with sabe lo que está haciendo y no prueba en absoluto? Alguna sugerencia general?

Saludos de antelación

PS: La acción de actualización:

def update 
    @style = Style.find(params[:id]) 
    flash[:notice] = "Style updated" if @style.update_attributes(params[:style]) 
    respond_with(@style) 
    end 

Respuesta

5

He estado buscando en esta cosa exacta (como encontré este tema) - hasta ahora he lo siguiente:

Location.any_instance.stub(:valid?).and_return(false) 
Location.any_instance.stub(:errors).and_return('anything') 

(donde ubicación es mi modelo que utiliza respond_with)

sin embargo Beli Hasta ahora debe haber una manera más agradable de hacerlo: si lo encuentro, ¡me aseguraré de publicarlo!

Nota: También estoy usando la gema respondedores lo que una de estas líneas puede no ser necesario para usted si usted no lo está utilizando!

Cuestiones relacionadas