Rspec: レコードが削除されたかどうかを確認するにはどうすればよいですか?
概要
作成されたモデルが削除されたかどうかを確認するための簡単な Rspec テストを作成しました。ただし、モデルがまだ存在するため、テストは失敗します。記録が実際に削除されたかどうかを確認する方法について、誰か助けてもらえますか?
RSpec.describe Person, type: :model do
let(:person) {
Person.create(
name: "Adam",
serial_number: "1"
)
}
it "destroys associated relationships when person destroyed" do
person.destroy
expect(person).to be_empty()
end
end
解決策
選択肢は 2 つあります。次のことをテストできます。
両方の組み合わせは次のようになります。
it "removes a record from the database" do
expect { person.destroy }.to change { Person.count }.by(-1)
expect { person.reload }.to raise_error(ActiveRecord::RecordNotFound)
end