leaning diary Rails

【Learning Dairy23】今週のRSpecのふりかえり(change/not_change/flash/include))

28/10/2023

【Learning Dairy23】今週のRSpecのふりかえり(change/not_change/flash/include))

 

今週書いたRSpecで使用したマッチャについて確認しておきます。

 

意図した変更が行われていることを確かめる

 

expect内のブロックが評価する前後で、レシーバのメッセージやブロックを評価します。

 

もし値が同じオブジェクトなら、その前後のハッシュ値を使用して値が変更されたかどうかを確認します。

 

このマッチャを正しく動作させるためにはオブジェクトにハッシュを適切に実装する必要があります。

 

expect{
 patch xxxxxxxxxxxxxxx_path(yyyyy)
 }.to change{zzzzzzzzzzzzzzz}

 

対象の値が変わっていないことを確認する

fromを指定するフォームをサポートしています。

 

notをつければいいだけと、とてもシンプルでわかりやすいなと思うことです。

 

expect(   ).not_to  change

 

Method: RSpec::Matchers#change

 

flash[:notice]の表示内容を確かめる

expect(  )内の書き方はこれでOKです。

 

expect(flash[:notice]).to eq "xxxxxxxxxxxxxxxxxxxxx"

 

HTTPステータスコードが一致する場合に通過するテスト

 

数字のほか「:success」といった書き方も可能です。

 

expect(response).to have_http_status(404)
expect(response).to have_http_status(:success)

 

Method: RSpec::Rails::Matchers#have_http_status

 

指定した値が含まれているか確認するテスト

ecpectのブロック内に引数の値が含まれていれば、通過します。

 

expect([1,2,3]).to      include(3)

 

Method: RSpec::Matchers#include

 

-leaning diary, Rails