LoginSignup
1
0

More than 3 years have passed since last update.

【rails6】結合テストコードエラー expected ◯◯◯◯, but was not given a block の解決

Posted at

みなさんこんばんは!
今日も結合テストコードのエラー解決について記載していきます

本日対面したエラー

ターミナル
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

うん、当然ですが無事にテスト終了しました!

続きを書いていくことにします:ok_hand:

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