次のシナリオをテストしようとしています。
->私はチームと呼ばれるモデルを持っていますが、それはユーザーによって作成されたときに理にかなっています。したがって、各チームインスタンスはユーザーに関連付ける必要があります。
それをテストするために、次のことを行いました。
describe Team do
...
it "should be associated with a user" do
no_user_team = Team.new(:user => nil)
no_user_team.should_not be_valid
end
...
end
チームモデルを次のように変更する必要があります。
class Team < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :name, :user
validates_presence_of :name
validates_presence_of :user
belongs_to :user
end
これはあなたにとって正しいようですか? :user属性をアクセス可能にする(質量割り当て)のが心配です。
私は通常このアプローチを使用します:
describe User do
it "should have many teams" do
t = User.reflect_on_association(:teams)
expect(t.macro).to eq(:has_many)
end
end
より良い解決策は、gem shoulda を使用することです。これにより、次のことが簡単にできます。
describe Team do
it { should belong_to(:user) }
end
it { Idea.reflect_on_association(:person).macro.should eq(:belongs_to) }
it { Idea.reflect_on_association(:company).macro.should eq(:belongs_to) }
it { Idea.reflect_on_association(:votes).macro.should eq(:has_many) }
class MicroProxy < ActiveRecord::Base
has_many :servers
end
describe MicroProxy, type: :model do
it { expect(described_class.reflect_on_association(:servers).macro).to eq(:has_many) }
end
あなたはこれを行う最も簡単な方法ができます。
it { expect(classroom).to have_many(:students) }
it { expect(user).to have_one(:profile }
参考に役立つリンク。 https://Gist.github.com/kyletcarlson/623492