ruby on rails - run - En RSpec, usando let variable adentro antes: todo bloque
ruby on rails selenium (3)
No estoy seguro de qué quiere decir con "esto" en "¿cuál es la forma correcta de hacer esto"? El acceso a let
y subject
dentro de before(:all)
está en desuso y se eliminará en RSpec 3 con la siguiente explicación en https://github.com/rspec/rspec-core/pull/857 :
let
declaraciones delet
ysubject
no están destinadas a ser invocadasbefore(:all)
hook, ya que existen para definir el estado que se restablece entre cada ejemplo, mientras quebefore(:all)
existe para definir el estado que se comparte entre los ejemplos en un ejemplo grupo.
Tengo el siguiente código dentro de la mayoría de mis pruebas:
describe ''index''
let(:company) { FactoryGirl.create(:company) }
let(:user) { FactoryGirl.create(:user, company: company) }
before do
sign_in user
visit products_path
end
...
end
Pero estoy recibiendo la siguiente advertencia:
WARNING: let declaration ''user'' accessed in a ''before(:all)''
Mi pregunta es, ¿cuál es la forma correcta de hacer esto? No puedo encontrar mucha información sobre la advertencia en sí.
¡Gracias!
EDITAR: Mi objetivo es usar la variable de usuario para poder pasarla a sign_in, que firma al usuario y luego usarla en otras pruebas (verifico el atributo de la compañía del Usuario)
Teniendo en cuenta la respuesta de Peter, creo que la forma correcta es acceder al usuario antes de cada bloque:
before(:each) do
sign_in user
end
Tuve el mismo problema, lo resolví declarando todas mis variables como atributos dentro del bloque before
:
describe ''index'' before(:all) do @company = FactoryGirl.create(:company) @user = FactoryGirl.create(:user, company: @company) sign_in @user visit products_path end ... end
Ahora puede usar @user
y @company
dentro de sus pruebas, y no debería tener ninguna advertencia.