Techioz Blog

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