ruby on rails - rails - Factory_Girl+RSpec: método indefinido ''create'' cuando create(: user)
rspec factory bot (2)
Debe mover la línea de create
dentro de la especificación en la que se está utilizando:
it ''should have a single registered user.'' do
dummy = create(:user)
expect(User.count).to eq(1)
end
En este momento, esa línea no tiene contexto (no en una especificación y no en un bloque before
). Esa es probablemente la razón por la que está obteniendo el error. Probablemente tengas toda la configuración correcta, pero solo tienes una línea en el lugar equivocado.
No se puede llamar "dummy = create (: user)" para crear un usuario. He ido y venido durante horas.
/home/parreirat/backend-clone/Passworks/spec/models/user_spec.rb:15:in `block (2 levels) in <top (required)>'': undefined method `create'' for #<Class:0xbcdc1d8> (NoMethodError)"
Esta es la fábrica, users.rb:
FactoryGirl.define do
factory :user do
email ''[email protected]''
password ''chucknorris''
name ''luis mendes''
end
end
Así es como llamo a FactoryGirl en user_spec.rb:
require ''spec_helper''
describe ''User system:'' do
context ''registration/login:'' do
it ''should have no users registered initially.'' do
expect(User.count).to eq(0)
end
it ''should not be logged on initially.'' do
expect(@current_user).to eq(nil)
end
dummy = create(:user)
it ''should have a single registered user.'' do
expect(User.count).to eq(1)
end
end
end
Agregué esto en spec_helper.rb como se indica:
RSpec.configure do |config|
# Include FactoryGirl so we can use ''create'' instead of ''FactoryGirl.create''
config.include FactoryGirl::Syntax::Methods
end
Otra razón para obtener el error de undefined method ''create''
podría ser que le falta esta configuración en spec/support/factory_girl.rb
:
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
end
Encontré ese código aquí .