Aquí está el código rspec para el regulador:rápida [: aviso] .should_not be_nil falló en rspec
it "should render edit if update was not saved" do
item = Factory(:lease_item)
session[:corp_head] = true
post 'update', {:id => item.id, :name => 'nil'}
flash[:notice].should_not be_nil
response.should render 'edit'
end
La actualización de controlador es:
def update
if (eng? && dept_head?) || corp_head? || ceo?
@lease_item = LeaseItem.find(params[:id])
@lease_item.input_by_id = session[:user_id]
if @lease_item.update_attributes(params[:lease_item], :as => :roles_update)
#redirect
redirect_to URI.escape("/view_handler?index=0&msg=Lease item updated successfully")
else
#back to new
render 'edit', :notice => "Item NOT updated"
end
else
#back to previous page
redirect_to URI.escape("/view_handler?index=0&msg=NO right to update lease item")
end
end
Aquí es el código de error de rspec:
1) LeaseItemsController GET 'update' should render edit if update was not saved
Failure/Error: flash[:notice].should_not be_nil
expected: not nil
got: nil
"Artículo NO actualizado" se esperaba en flash. Sin embargo, ¿por qué no hay nada con flash [: notice]? O cómo rspec hay un mensaje con render 'edit',: notice => 'Item NOT updated'
Thanks.
ACTUALIZACIÓN:
Aquí está el cambio en el controlador:
...........
else
#back to new
flash[:notice] = "Item NOT updated"
render 'edit'
end
.........
Este es el código rspec cuales pasa:
it "should render edit if update was not saved" do
item = Factory(:lease_item)
session[:corp_head] = true
post 'update', {:id => item.id, :lease_item => {:name => 'nil'}}
flash.should_not be_nil
response.should render_template(:action=> "edit")
end
no funcionó, si se utiliza el flash [: aviso ] .should_not be_nil (o .. flash.now [: notice] ...). El error es Got nil, que es el mismo que antes. También response.should render 'edit' (o ... render: action => 'edit') tampoco pasó. El error es NameError o NoMethodError. No estoy seguro por qué.
Usted está enviando "Artículo no actualiza" en el 'notice' variables al parcial de 'editar', pero ¿está realmente configurando 'flash [: notice]'? – Karl
Cómo configurar flash [: notice]? – user938363
no hay render 'foo',: notice => "blah" ... lea los documentos. Utilice flash [: notice] = "Artículo NO actualizado" luego renderice 'edit' – daniel