"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
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.
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 .
Manchmal müssen Sie nur require 'Rails_helper'
am oberen Rand Ihrer Testdatei einfügen. Das hat meins gelöst.