我有User
、Account
和Role
模型。用户可以单独存在。帐户必须通过角色绑定到用户。一个帐户必须至少有一个“所有者”类型的角色记录。我不确定如何在 RSpec 和 FactoryGirl 中进行测试。
# user_id, account_id, role
Role < ActiveRecord::Base
belongs_to :user
belongs_to :account
end
User < ActiveRecord::Base
has_many :roles
has_many :accounts, through: roles
accepts_nested_properties_for :accounts
end
Account < ActiveRecord::Base
has_many :roles
has_many :users, through: roles
end
如果用户未登录,Accounts.new 将显示用户和帐户表单。如果用户已登录,则只会显示“帐户”表单。问题是,我不确定在尝试测试关联时 RSpec 中的角色和帐户会是什么样子。
此测试失败(数组返回为空):
describe Account do
let(:user) { FactoryGirl.create(:user) }
before { @account = user.accounts.build(title: "ACME Corporation", subdomain: "acme") }
subject { @account }
it { should respond_to(:users) }
its(:users) { should include(user) }
然后是用户登录和未登录时的测试增加了复杂性。对于类似的用例,我可以看到任何参考示例代码吗?我也不确定在 roles_spec 中测试什么,以及哪些属于 accounts_spec/user_spec。
工厂:
FactoryGirl.define do
factory :user do
name "Mickey Mouse"
email "mickey@disney.com"
password "m1ckey"
password_confirmation "m1ckey"
end
factory :account do
title "ACME Corporation"
subdomain "acme"
end
factory :role do
user
account
end
end