koya-kudaka / sample_app

0 stars 0 forks source link

assert_no_differenceメソッドをチュートリアル内のコードを元に解説 #15

Open koya-kudaka opened 3 years ago

koya-kudaka commented 3 years ago

test>controllers>users_controller_test.rb

test "should redirect destroy when not logged in" do
    assert_no_difference 'User.count' do
      delete user_path(@user)
    end
    assert_redirected_to login_url
  end

  test "should redirect destroy when logged in as a non-admin" do
    log_in_as(@other_user)
    assert_no_difference 'User.count' do
      delete user_path(@user)
    end
    assert_redirected_to root_url
  end
koya-kudaka commented 3 years ago

コントローラーテストでの、assert_no_differenceメソッドがわからなかったので、理解したてで言語化してみる。

そもそも、assert_no_differenceメソッドは、ブロックを作ってテストされる。 このブロック内(do~end)で処理される前後で、特定の値(引数に用いた部分)に差分がなければgreenとなるテストを実行してくれる。

koya-kudaka commented 3 years ago

今回の場合だと、 delete user_path(@user) #特定のuserに対するdeleteリクエストを送られている。 が実行された後に、User.count #dbにある全てのユーザー数 に変化がなければgreenになるよ!ということを表している。