2014-12-04 101 views
2

我想使用RSpec來測試模型之間的關係。我有兩個型號:通過與Ruby-on-Rails 4.1的關係遇到RSpec 3.1.0和has_many的問題

class User < ActiveRecord::Base 
    has_many :user_roles 
    has_many :roles, through: :user_roles 
end 

class Role < ActiveRecord::Base 
    has_many :user_roles 
    has_many :users, through: :user_roles 
end 

有通類:

class UserRole < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :role 
end 

我的RSpec的代碼是:

describe User do 
    it { is_expected.to have_many(:user_roles) } 
    it { is_expected.to have_many(:roles).through(:user_roles) } 
end 

這些拋出錯誤的兩個:

1)用戶應該有很多:user_roles 故障/錯誤:它{is_expected.to have_many(:user_roles)} 預期#向has_many? #./spec/models/user_spec.rb:49:in`迴應塊(2級)在 '

2)用戶 故障/錯誤:它{is_expected.to have_many(:角色)。通過(:user_roles)} NoMethodError: 未定義的方法through' for #<RSpec::Matchers::BuiltIn::Has:0x007fe1cd003ac8> # ./spec/models/user_spec.rb:50:in塊(2級)在'

無論我嘗試什麼,我似乎無法讓這些工作。任何人都知道我在做什麼錯了?

感謝您的幫助!

回答

0

我結束了使用Shoulda。你也可以通過編程你自己的匹配器來解決這個問題。