ruby on rails - example - Encuentre un registro recién creado en una prueba de controlador usando RSpec 3 y Rails 4
ruby on rails selenium (2)
No es una buena idea comparar records
u objects
en pruebas de controlador. En una prueba de create
controlador, debe probar la redirección correcta y el cambio del registro.
Puede compare
fácilmente sus objetos en una prueba modelo, porque puede seguir fácilmente su registro.
Aún así, puede acceder al registro creado a partir de una prueba si su action
tiene una variable
que contiene el record
como
En el controlador
def create
@user = #assign user
end
En prueba
assigns(:user).name.should eq "Name" # If it has a name attribute
assigns(:user).pending.should be_true # I don''t know how you implemented pending
Puedes echar un vistazo a este artículo
Estoy haciendo una especificación de controlador en Rails 4, y quiero probar los atributos de un registro creado por una acción de controlador. ¿Cómo encuentro el nuevo registro creado?
Por ejemplo, ¿qué podría hacer en lugar de
it ''Marks a new user as pending'' do
post :create, params
# I don''t want to use the following line
user = User.last
expect(user).to be_pending
end
Las guías de Rails solo hablan brevemente sobre pruebas de controlador, donde menciona probar que Article.count
cambia por 1, pero no cómo obtener un nuevo modelo de ActiveRecord.
La pregunta Buscar el registro más reciente en Rails 3 es sobre Rails 3.
Soy reacio a usar User.last
, ya que la clasificación predeterminada puede ser distinta de la fecha de creación.
Si un controlador tiene una variable de instancia llamada @user
, entonces podemos acceder a ella en RSpec assigns(:user)
.