LoginSignup
1
0

More than 3 years have passed since last update.

【RSpec】HTTPメソッドDELETEのテストをする時の注意点

Last updated at Posted at 2020-02-23

概要

"expected #count to have changed by -1, but was changed by 0"のエラー文の解消話です。

前提

  • 具体的なコードはほとんど書いていないです。

テストが落ちたコード

    describe OrdersController do
      describe 'delete #destroy' do
        it "deletes the article" do
          order = create(:order)
          expect{
            delete :destroy, id: order
          }.to change(Order,:count).by(-1)
        end
      end
    end

ブルーな気持ち

DELETEについてのテストを書いていたのですが、"expected #count to have changed by -1, but was changed by 0"のエラー文が登場して原因がわからず頭を抱えていました。

解決方法

DELETEの処理がレコードの物理削除ではなく論理削除を行なっていたことが原因でした

そのため、レコードの総数ではなく論理削除処理が行われていることをテストするようにテスト方法を見直して解決できました。

まとめや自己反省

  • "expected #count to have changed by -1, but was changed by 0"のエラーが発生したら
    物理削除ではなく論理削除ではないか?と疑ってみてください。

  • destroyメソッドの中身を読み直すと物理削除ではなく論理削除を行なっていることが気づけただろうから、テスト対象のメソッドを見直してからテストを書くようにしよう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0