我有简单的测试用例:
it "is removed when associated board is deleted" do
link = FactoryGirl.create(:link)
link.board.destroy
expect(Link.find(link.id)).to raise_error ActiveRecord::RecordNotFound
end
它输出失败了:
1) Link is removed when associated board is deleted
Failure/Error: expect(Link.find(link.id)).to raise_error ActiveRecord::RecordNotFound
ActiveRecord::RecordNotFound:
Couldn't find Link with id=1
# ./spec/models/link_spec.rb:47:in `block (2 levels) in <top (required)>'
知道为什么吗?
答案 0 :(得分:25)
要捕获错误,您需要将代码包装在一个块中。您的代码在不期望错误的范围内执行Link.find(link.id)
。适当的测试:
it "is removed when associated board is deleted" do
link = FactoryGirl.create(:link)
link.board.destroy
expect { Link.find(link.id) }.to raise_error ActiveRecord::RecordNotFound
end