Rspec测试模型的多个has_many,dependent destroy

时间:2015-10-28 14:19:02

标签: ruby-on-rails-4 rspec

我在rails中有一个模型,它有多个has_many,:dependent => :破坏它里面的关系。

class XYZ <ActiveRecord::Base
has_many :abc, :dependent => :destroy
has_many :def, :dependent => :destroy
has_many :ghi, :dependent => :destroy
.......
end 

我在xyz控制器中进行了rpec测试:

describe 'destroy' do
it 'should destroy all the entities in has_many' do
 @xyz= FactoryGirl.create(:xyz)
 @abc= FactoryGirl.create(:abc, :xyz=> @xyz)
 @def= FactoryGirl.create(:def, :xyz=> @xyz)
 @ghi= FactoryGirl.create(:ghi, :xyz=> @xyz)
 expect { @xyz.destroy }.to change { ABC.count }.by(-1)
end 
end 

如何测试销毁xyz是否实际上同时减少了模型Abc,Def和Ghi的数量?或者唯一的方法是为个别has_many,依赖:destroy关系编写单独的测试?

1 个答案:

答案 0 :(得分:0)

使用rspec-collection_matchers并使用这段代码,不要测试已测试的内容。

it { should have_many(:abc).dependent(:destroy) }