2013-07-02 50 views
0

我試圖在我的應用程序中設置測試,並且遇到了RSpec,FactoryGirl和Mongoid的問題。我有以下工廠:FactoryGirl + Mongoid + RSpec未正確構造對象。

FactoryGirl.define do 
    factory :user do |u| 
    u.name    { Faker::Name.name } 
    u.email   { Faker::Internet.email } 
    u.crypted_password { Faker::Lorem.characters(10) } 
    u.password_salt { Faker::Lorem.characters(10) } 
    u.role    :user 
    end 
end 

我嘗試在我的測試中使用此工廠:

require 'spec_helper' 
describe User do 
    it "has a valid factory" do 
    create(:user).should be_valid 
    end 
end 

但我得到這個錯誤:

1) User has a valid factory 
    Failure/Error: FactoryGirl.create(:user).should be_valid 
    NoMethodError: 
     undefined method `user' for #<User:0x007ff24a119b28> 
    # ./spec/models/user_spec.rb:5:in `block (2 levels) in <top (required)>' 

我不知道是什麼導致這個錯誤。另外,有沒有辦法使用rspec查看完整的堆棧跟蹤?

回答

2

這條線有問題

u.role :user 

我猜你要定義爲「用戶」默認角色?然後不要使用符號或方法,而要用字符串代替

u.role 'user' 
+0

@Max,我不知道你是如何定義角色的,但是你可以通過'@user.role = something'在控制檯中驗證它。無論在控制檯中的任何作品都可以在工廠中使用。 –

+0

我發現了這個問題。這是一個簡單的錯字。我正在驗證字段'user'而不是字段'role'。你知道如何從rspec獲得完整的堆棧跟蹤嗎?我可能早就注意到我能夠查看堆棧跟蹤。 – Max

+1

@Max,只需在您的rspec命令中添加'-b'參數,這意味着回溯。 –