16

私はこのチュートリアルに従って、ファクトリーガール、rspec を使用してレール上で TDD を開始しましたが、この問題に遭遇しました。

これが私の「工場」.rb(events.rb)です

require 'faker'

FactoryGirl.define do
   factory :event do
     name "HIGH"
     genre "house, techno, idb"
     venue_name "Westbourne Studios"
     venue_address "4-6 Chamberlayne Road"
     venue_postcode "NW103JD"
     begin_time "10pm"
     end_time "2am"
     user_id 2
     description "A Super massive party with loads of everything you would want around."
     status true
     venue_id nil
   end
end

ここに event_spec.rb があります:

require 'spec_helper'
require 'factory_girl_rails'

describe Event do

it "has a valid factory" do
  Factory.create(:event).should be_valid
end

  it "is invalid without a name"
  it "is invalid without a genre"
  it "is invalid without a venue_name"
  it "is invalid without a venue_address"
  it "is invalid without a venue_postcode"
  ...

 end

モデルのセットアップ、移行などを行いました。「rspec spec/models/event_spec.rb」を実行すると、次のエラーが発生します。

Failures:

1) Event has a valid factory
 Failure/Error: Factory.create(:event).should be_valid
 NameError:
   uninitialized constant Factory
 # ./spec/models/event_spec.rb:7:in `block (2 levels) in <top (required)>'

 Finished in 0.1682 seconds
 13 examples, 1 failure, 12 pending

 Failed examples:

 rspec ./spec/models/event_spec.rb:6 # Event has a valid factory

 Randomized with seed 64582
4

3 に答える 3

57

このように使用してみてください:

FactoryGirl.create(:event).should be_valid

古いバージョンの宝石では「ファクトリー」だけだったと思います。ファクトリーガールの最近の「はじめに」ガイドを見ると、 「ファクトリーガール」での呼び出ししかありません。

于 2012-09-11T22:07:18.430 に答える
10

コンテンツを含むファイル spec/support/factory_girl.rb を作成する場合:

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

次に、次のように簡単に使用できます。

create(:event)
build(:book)

それ以外の:

FactogyGirl.create(:event)
FactogyGirl.build(:book)
于 2012-11-23T14:58:28.640 に答える