[Ror-es] Test funcional, actualizando modelo desde controlador

Fernando Blat ferblape at gmail.com
Thu Sep 13 18:18:57 GMT 2007


Antes del assert_equal de [1] haz un @user.reload para que vuelva a
leer el objeto user de la base de datos con los atributos
"refrescados".

Un saludo.

On 9/13/07, Héctor Pérez Arenas <ruby-forum-incoming at andreas-s.net> wrote:
> Hola,
>
> Estoy teniendo problemas en los tests funcionales cuando intento
> actualizar un modelo desde un controlador[1]. Estoy probándolo en una
> aplicación recién creada, que sólo dispone del modelo user y el
> controlador users, creados con el scaffold_resource [2].
>
> En el test.log podemos ver como sí se ha modificado el usuario [3] al
> final del método update del controlador [4]. Sin embargo, cuando vuelve
> al test funcional, @user.name mantiene el valor antiguo. ¿Alguien puede
> decirme qué hago mal? Gracias.
>
>
>
> [1]
>   def test_should_update_user_name
>     @user=User.create(:name=>"nombre_inicial")
>     put :update, :id => @user.id, :user => {:name=>"no_va"}
>     assert_redirected_to user_path(assigns(:user))
>     assert_equal "no_va", at user.name                             # <-- NO
> VA
>   end
>
>   1) Failure:
> test_should_update_user_name(UsersControllerTest)
> [test/functional/users_controller_test.rb:55]:
> <"no_va"> expected but was
> <"nombre_inicial">.
>
> [2]
> rails prueba
> cd prueba
> ruby script/generate scaffold_resource user name:string
>
> [3]
> Processing UsersController#update (for 0.0.0.0 at 2007-09-13 19:43:10)
> [PUT]
>   Session ID:
>   Parameters: {"user"=>{"name"=>"no_va"}, "action"=>"update",
> "id"=>"66", "controller"=>"users"}
>   User Load (0.000245)   SELECT * FROM users WHERE (users.`id` = 66)
>   User Update (0.000223)   UPDATE users SET `name` = 'no_va' WHERE `id`
> = 66
> Redirected to http://test.host/users/66
> ---------------------
>   User Update (0.000206)   UPDATE users SET `name` = 'no_va' WHERE `id`
> = 66
> true
> no_va
> Completed in 0.00427 (233 reqs/sec) | DB: 0.00166 (38%) | 302 Found
> [http://test.host/users/66?user=nameno_va]
>   SQL (0.044350)   ROLLBACK
>
>
> [4]
>   # PUT /users/1
>   # PUT /users/1.xml
>   def update
>     @user = User.find(params[:id])
>
>     respond_to do |format|
>       if @user.update_attributes(params[:user])
>         flash[:notice] = 'User was successfully updated.'
>         format.html { redirect_to user_url(@user) }
>         format.xml  { head :ok }
>       else
>         format.html { render :action => "edit" }
>         format.xml  { render :xml => @user.errors.to_xml }
>       end
>     end
>     logger.debug("---------------------")
>     logger.debug(@user.save)
>     logger.debug(@user.name)
>   end
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Ror-es mailing list
> Ror-es at lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>


-- 
Fernando Blat
blog > http://www.inwebwetrust.net


More information about the Ror-es mailing list