我在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关系编写单独的测试?
答案 0 :(得分:0)
使用rspec-collection_matchers并使用这段代码,不要测试已测试的内容。
it { should have_many(:abc).dependent(:destroy) }