假设我有两个模型
class User < ActiveRecord::Base
has_many :friendships, :dependent => :destroy
has_many :followings, :through => :friendships, :foreign_key => "followed_id"
end
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :following, :class_name => "User", :foreign_key => "followed_id"
end
现在在我的user_spec.rb中我有这个测试
it "should delete all friendships after user gets destroyed" do
@user.destroy
[@friendship].each do |friendship|
lambda do
Friendship.find(friendship)
end.should raise_error(ActiveRecord::RecordNotFound)
end
end
这是测试:dependent =&gt;的正确位置:破坏关系或者这是属于friendship_spec.rb还是在我测试这两个规格中的哪一个不重要?
答案 0 :(得分:1)
这种事情有时是品味问题,但我认为User
的规范可能是测试这个问题的最佳场所。您调用开始测试的方法是User
上的方法,因此在User
的其他测试中测试它也是有意义的。
答案 1 :(得分:1)
您可以考虑使用shoulda_matchers来测试您的关联:
# user_spec.rb
it { should have_many(:friendships).dependent(:destroy) }
# friendship_spec.rb
it { should belong_to(:user) }
让每个模型测试自己的关联是最好的方法恕我直言。