2013-06-02 79 views
3

每當我調用任何FactoryGirl創建或構建方法時,我都會遇到一個奇怪的錯誤。factory_girl:創建對象時出現奇怪的錯誤

在我的規格文件我有一個前塊,我想創建用戶的基本列表:

require 'spec_helper' 

describe "Users" do 
    before do 
    create_list(:user, 3, :confirmed) 
    @user = User.first 
    end 
end 

此行create_list引發以下錯誤:

TypeError: nil is not a symbol 
./spec/requests/users_spec.rb:5:in `block (2 levels) in <top (required)>' 

我唯一的工廠文件./spec/factories/user.rb似乎已加載。 如果我在第一行提出錯誤,則在執行規範測試時會拋出此錯誤。

這是我廠文件的內容:

FactoryGirl.define do 
    factory :user, aliases: [:friend] do 
    sequence(:username) { |n| "foo#{n}" } 
    password "foobar" 
    password_confirmation {"#{password}"} 
    email { "#{username}@example.com" } 
    date_of_birth 20.years.ago 

    trait :admin do 
     admin true 
    end 
    trait :game_admin do 
     game_admin true 
    end 
    trait :confirmed do 
     confirmed_at Time.now 
    end 
    end 
end 
+0

既然你不使用'FactoryGirl.create_list(...' ,讓我們知道你是否已經[將語法方法混合到Rspec中](https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#using-factories)。 – Sun

+0

是的,我加載FactoryGirl DSL在我的spec_helper中:config.include FactoryGirl :: Syntax :: Methods –

+0

如果我遺漏了create_list的所有參數,將會引發異常「錯誤的參數數目」。因此,似乎找到了創建方法。 –

回答

2

的問題就解決了。 深入挖掘完整跟蹤之後,我發現該錯誤是在friendly_id的一部分中引發的。 friendly_id嘗試使用我的模型用戶的primary_key,但是(但是)返回nil。 所以,User.send(key)拋出這個錯誤。

我不知道爲什麼我的模型的primary_key爲空突然,但下面耙後命令一切現在是罰款:

rake db:drop 
rake db:create 
rake db:migrate 
rake db:test:prepare 
相關問題