LoginSignup
19
6

More than 3 years have passed since last update.

Minitestのassert_differenceメソッドについて

Last updated at Posted at 2019-08-23

Minitestのassert_differenceメソッド

まずassert_differenceメソッドはMinitestそのもののメソッドではなく、Railsがminitestフレームワークを拡張するという形で独自のカスタムアサーションを追加しています。他にはassert_changesやassert_response、assert_redirected_toといったメソッドもRailsが提供するカスタムアサーションになります。assert_differenceの具体的な使用例としては以下のようになります。

assert_difference 'User.count', -1 do
  delete user_path(@non_admin)
end

assert_differenceメソッドの第1引数に渡したメソッドの値が、ブロック内で変更されることを検証します。第2引数に変更される期待値を渡します。省略した場合は"+1"が期待値になります。つまりassert_differenceとはブロック内の処理をして指定した数字の分だけ変化したことを確認するメソッドになります。テストの用途としてはユーザーなどの数をテストしたり、画面遷移をした後のリンクの数を確認したり出来ます。

assert_no_differenceについて

ちなみにassert_differenceに似たメソッドとしてassert_no_differenceというメソッドも存在します。式を評価した結果の数値は、ブロックで渡されたものを呼び出す前と呼び出した後で違いがないと主張する。使い方もassert_differenceと同じで以下のようになります。

assert_no_difference 'User.count' do
  delete user_path(@user)
end
19
6
2

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
19
6