2013-11-04 130 views
0

我一直在構建我的應用程序,現在我準備開始測試。我在Seed.rb中定義了Factory女孩,但是當我正在運行測試時,我還在Rspec的慣常位置/spec/factories.rb中定義了測試。未定義的方法`first_name ='Rspec +工廠

但是,我的第一次測試失敗,出現以下錯誤。

user_spec.rb

require 'spec_helper' 

describe User do 
    it "should have valid factory" do 
    FactoryGirl.build(:user1).should be_valid 
    end 
end 

返回錯誤:

Failures: 

    1) User should have valid factory 
    Failure/Error: FactoryGirl.build(:user1).should be_valid 
    NoMethodError: 
     undefined method `first_name=' for #<User:0x000000061410f8> 
    # ./spec/models/user_spec.rb:5:in `block (2 levels) in <top (required)>' 

Finished in 0.05459 seconds 
1 example, 1 failure 

Failed examples: 

rspec ./spec/models/user_spec.rb:4 # User should have valid factory 

Randomized with seed 29084 

spec/factories.rb

FactoryGirl.define do 
    factory :admin1, class: User do 
    first_name "admin" 
    last_name "minstrator" 
    password "admin1234" 
    profile_name "profilename" 
    email "[email protected]" 
    password_confirmation "admin1234" 
    admin true 
    end 

    factory :user1, class: User do 
    first_name "user2" 
    last_name "man2" 
    password "user1234" 
    profile_name "profilename" 
    email "[email protected]" 
    password_confirmation "user1234" 
    admin false 
    end 

    end 

它在我seed.rb使用上發展數據時能正常工作,但現在我已經開始使用Rspec進行測試它都出錯了。

我在這裏做錯了什麼。我目前不是一個很大的測試迷,但我需要提高我的技能,因爲我知道它對於Web應用程序非常有用。

您的幫助是非常感謝,請讓我知道如果您需要了解更多的信息。

回答

1

如果你的代碼在開發中,但沒有在測試中,我的猜測是你的數據庫測試副本不同步。嘗試運行rake db:test:preparerake db:test:clone並再次運行您的規格。

注:

db:test:clone沒有在Rails的要求4.2.0 'WARNING: db:test:clone is deprecated. Rails的測試助手現在可以自動保持你的測試模式,請參見發行說明有關詳細信息「)

+0

都能跟得上,不工作,但是當我嘗試耙分貝:重置我得到未定義的方法相同的錯誤FIRST_NAME –

+0

你可以發表你的'schema.rb ' – gotva

+0

謝謝Scott。這個問題一直在打擊我。是不是直到你提到的數據庫可能不同步,我跳入'rails console -e test'並運行'User'來查看我的'first_name'字段不存在。冉你的建議答案和所有修正! :) –

0

我。相信這裏的問題是我的一個遷移失蹤,並且因爲它沒有用戶first_name,所以沒有任何定義。

對所有新手來說都是一個大提示,永遠不會刪除你的任何遷移。

由於辛普森十分正確地說,「D'哦」

相關問題