我在project.rb:
has_many :items, :dependent => :destroy
在item.rb中:
belongs_to :project
我的项目夹具:
b1_s_first_project:
title: B1's first project
我的物品夹具:
b1_s_first_project_s_first_item:
title: B1's first project's first item
project: b1_s_first_project
在我的单元测试中,我设置了局部变量item = items(:b1_s_first_project_s_first_item)
和project = projects(:b1_s_first_project)
。当我致电project.destroy
时,project.destroyed?
会返回true,但item.destroyed?
会返回nil,就好像它没有被销毁一样。我错过了什么?提前谢谢。
答案 0 :(得分:5)
看起来您可能需要在测试之前添加item.reload
是否已被销毁
答案 1 :(得分:0)
只是通过使用断言.reload
在关联记录上利用assert_raise
来提供替代方法。这适用于Rails 5,但应该适用于前两个版本。
模型设置:
# foo.rb
class Foo < ApplicationRecord
has_many :bars, dependent: :destroy
end
# bar.rb
class Bar < ApplicationRecord
belongs_to :foo
end
灯具设置:
# foos.yml
oof:
title: Hello
# bars.yml
rab:
title: World!
foo: oof
模型minitest:
test 'foo should destroy dependency bar on destroy' do
foo, bar = foos(:off), bars(:rab)
assert foo.destroy
assert_raise(ActiveRecord::RecordNotFound) { bar.reload }
end