【rails6】결합 테스트 코드 에러 expected ◯◯◯◯, but was not given a block의 해결

여러분 안녕하세요!
오늘도 조인 테스트 코드의 오류 해결에 대해 설명합니다.

오늘 대면한 오류


ターミナル
Failure/Error: expect(find_link('削除する',  href: article_path(@article1)).click).to change{Article.count}.by(-1)
       expected ◯◯☆☆◯◯, but was not given a block

・・・「◯◯☆☆◯◯가 블록으로 건네지지 않아!」라는 일본어 번역이 됩니다

그럼, 원인의 테스트 코드 기술을 확인해 봅시다!

article_spec.rb
# 投稿を削除するとレコードの数が1減ることを確認する
expect(find_link('削除する',  href: article_path(@article1)).click).to change{Article.count}.by(-1)

분명 여러분이라면 어디가 잘못되어 있는지, 곧 알 수 있네요…

잘못된 것은 expect() 입니다. 여기는 expect{ } 로 연결하지 않으면 안됩니다.
changeマッチャでモデルのカウントをする場合のみ、expect()ではなくexpect{}を使いましょう라고 가르치고 있었습니다… 이 부분을 잊어 버렸다고 하는 것이군요… 반성입니다…

그럼 고쳐 봅시다.

article_spec.rb
# 投稿を削除するとレコードの数が1減ることを確認する
expect{find_link('削除する',  href: article_path(@article1)).click}.to change{Article.count}.by(-1)

터미널에서 실행
Finished in 12.24 seconds (files took 1.3 seconds to load)
3 examples, 0 failures

그래, 당연하지만 무사히 테스트 종료했습니다!

계속을 작성하기로 결정합니다

좋은 웹페이지 즐겨찾기