Impossible d'appeler "dummy = create (: user)" pour créer un utilisateur. Je suis allé en arrière pendant des heures.
/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)"
C'est l'usine, users.rb:
FactoryGirl.define do
factory :user do
email '[email protected]'
password 'chucknorris'
name 'luis mendes'
end
end
Voici comment j'appelle FactoryGirl dans le fichier 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
J'ai ajouté ceci sur spec_helper.rb comme indiqué:
RSpec.configure do |config|
# Include FactoryGirl so we can use 'create' instead of 'FactoryGirl.create'
config.include FactoryGirl::Syntax::Methods
end
Vous devez déplacer la ligne create
à l'intérieur de la spécification dans laquelle elle est utilisée:
it 'should have a single registered user.' do
dummy = create(:user)
expect(User.count).to eq(1)
end
Pour le moment, cette ligne est sans contexte (pas dans une spécification ni dans un bloc before
). C'est probablement pourquoi vous obtenez l'erreur. Toute la configuration est probablement correcte, mais vous n'avez qu'une seule ligne au mauvais endroit.
Une autre raison pour avoir l'erreur undefined method 'create'
pourrait être que cette partie de la configuration est manquante dans spec/support/factory_girl.rb
:
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
end
J'ai trouvé ce code ici .
Parfois, il vous suffit de require 'Rails_helper'
en haut de votre fichier de test. Ceci a résolu le mien.