11

私は簡単なテストケースを持っています:

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)>'

理由はありますか?

4

1 に答える 1

27

エラーをキャッチするには、コードをブロックでラップする必要があります。あなたのコードは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
于 2013-06-20T12:07:19.173 に答える