2014-01-30 4 views
6

Ich habe ein neues Rails 4-Projekt mit FactoryGirl und rSpec. In meinem spec_helper.rb ich habe:rspec-rails und factory girl block in <oben (erforderlich)> ': undefinierte Methode `Build'

# lots of stuff 
RSpec.configure do |config| 
    # more stuff 
    config.include FactoryGirl::Syntax::Methods 
end 

Ich entfernte auch die rspec/autorun in dieser Datei benötigen.

Eine einfache spec:

require 'spec_helper' 

describe User do 
    build(:user) 
end 

mit einer einfachen Fabrik:

FactoryGirl.define do 
    factory :user do 
    email  "[email protected]" 
    end 
end 

schlägt mit der folgenden Meldung.

`block in <top (required)>': undefined method `build' for #<Class:0x007fd46d0e3848> (NoMethodError) 

Wenn ich jedoch build in der Spezifikation wie dies explizit qualifizieren es passiert:

require 'spec_helper' 

describe User do 
    FactoryGirl.build(:user) 
end 

Was kann ich ich muss FactoryGirl jedes Mal, tun dies nicht stimmen?

Antwort

10

Die zu übergeben config.include Methoden sind nur durch RSpec innerhalb der it, enthält let, before und after Blöcke, nicht auf der obersten Ebene von describe. Da Sie in der Regel Ihre Setup- und Testlogik verwenden müssen, ist dies in der Praxis kein Problem.

+0

Ich wechselte von Machinist zu FactoryGirl und steckte das scheinbar Einfachste zusammen, so dass ich eine Lektüre lesen konnte, wie das funktionierte. –

+4

Jeff

Verwandte Themen