RSpecを使用してWindowsでRails 3アプリケーションをテストしました。テストとファクトリーを作成しましたが、コマンドラインでRSpecを実行したときに発生する問題を解決できません。
テストファイルの1つを以下に示します。'spec_helper 'が必要です
describe "SignIns" do
it "can sign in" do
user = FactoryGirl.create(:user)
visit new_user_session_path
fill_in "login", with: user.username
fill_in "password", with: user.password
click_on "sign in"
current_user.username.should == user.username
end
end
そして、factories.rbは次のとおりです。
factory :layout do
name "layout1"
end
factory :club do
sequence(:name) { |i| "Club #{i}" }
contact_name "John Doe"
phone "+358401231234"
email "#{name}@example.com"
association :layout
end
factory :user do
sequence(:username) { |i| "user#{i}" }
password 'password'
email "[email protected]"
club
end
RSpecを実行しようとすると、次のエラーが発生します。
trait not registered: name
#C: in 'object'
#.spec/features/sign_in_spec.rb:11:in 'block (2 levels) in (top(required))
何が悪いのですか?
私はこれが古い質問であることを知っていますが、「トレイトが登録されていません」を検索したときに他の誰かがここに行く場合に備えて:
email
が質問の:club
ファクトリのname
にどのように依存するかなどの依存属性を使用する場合、遅延評価されるように属性を中括弧で囲む必要があります。
email {"#{name}@example.com"}
これはFactoryGirlエラーであり、(spec/features/sign_in_spec.rb:11で)次のように使用しているようです:
FactoryGirl.create :user, :name
これは、ファクトリuser
の名前と呼ばれる特性を登録した場合にのみ機能します。特性の詳細 here
作成したユーザーの名前をオーバーライドするだけの場合、構文は次のとおりです。
FactoryGirl.create :user, name: 'THE NAME'