wake-up-neo.com

Factory_Girl + RSpec: undefinierte Methode 'create' bei create (: user)

"Dummy = create (: user)" kann nicht aufgerufen werden, um einen Benutzer zu erstellen. Bin stundenlang hin und her gegangen.

/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)"

Dies ist die Factory users.rb:

FactoryGirl.define do

    factory :user do
      email '[email protected]'
      password 'chucknorris'
      name 'luis mendes'
    end

end

So rufe ich FactoryGirl in der user_spec.rb auf:

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

Ich fügte dies auf spec_helper.rb hinzu, wie angewiesen:

RSpec.configure do |config|

   # Include FactoryGirl so we can use 'create' instead of 'FactoryGirl.create'
   config.include FactoryGirl::Syntax::Methods

end
15
GigaBass

Sie müssen die Zeile create innerhalb der Spezifikation verschieben, in der sie verwendet wird:

it 'should have a single registered user.' do
  dummy = create(:user)
  expect(User.count).to eq(1)
end

Im Moment ist diese Zeile ohne Kontext (nicht in einer Spezifikation und nicht in einem before Block). Das ist wahrscheinlich der Grund, warum Sie den Fehler bekommen. Sie haben wahrscheinlich alle Einstellungen korrekt, aber nur eine Zeile an der falschen Stelle.

9
Bill Turner

Ein weiterer Grund für den undefined method 'create'-Fehler könnte sein, dass Ihnen diese Konfiguration in spec/support/factory_girl.rb fehlt:

RSpec.configure do |config|
  config.include FactoryGirl::Syntax::Methods
end

Ich habe diesen Code gefunden hier .

6
Jason Swett

Manchmal müssen Sie nur require 'Rails_helper' am oberen Rand Ihrer Testdatei einfügen. Das hat meins gelöst.

1
Ruto Collins