tests run rails matchers how ruby-on-rails ruby rspec rspec3

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 de let y subject no están destinadas a ser invocadas before(:all) hook, ya que existen para definir el estado que se restablece entre cada ejemplo, mientras que before(: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.