web-dev-qa-db-fra.com

Factory_Girl + RSpec: méthode non définie 'create' lors de la création (: utilisateur)

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
15
GigaBass

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.

9
Bill Turner

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 .

6
Jason Swett

Parfois, il vous suffit de require 'Rails_helper' en haut de votre fichier de test. Ceci a résolu le mien.

1
Ruto Collins