2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RSpecの to be_blank ,to be_present とto be_truthy,to be_falseyなどのmatcherについて

Last updated at Posted at 2021-09-27

matcherとは

RSpecでテストをする時、こういう風に動いて欲しいと期待をしてその通りに動いたかを
確認するためのものです。
例えば

expect(100 + 300).to eq 400

とあったとします。
これは100 + 300は400と期待(expect)をし、この答えがきたしていたものと等しい(eq)かを
確認しています。

このeqがmatcherです。

 下ではmatcherの種類を一部紹介します。

to be_blankとto be_present

最初にto be_blankから説明します。
これは~は存在しないというmatcherです。
例えば

 expect(article[:title]).to be_blank

これはarticleにはtitleは存在しないと期待したテストになります。

次にto be_presentについてです。

 expect(article[:user_id]).to be_present

これはarticleにはuser_idは存在すると期待したテストになります。

⚫︎補足 beの意味
beは等号や不等号など大小を調べるときに使うみたいです。
等号・不等号なしでも上のようもにかけます。
詳しくは下の資料からも参考にしてみてください。

to be_truthyとto be_falsey

to be_truthyから説明します。
これは戻り値をtrueで返すmatcherです。

# 入力しなければならないものがあるので保存できる(結果はtrue)
staff.name = 'Tom'
user.job = 'programmer'
expect(staff.save).to be_truthy

staffは保存できると期待してtrue(保存できる)とテストをしています。

最後にto be_falseyを説明します。

# 何も入力されていないので保存できない(結果はfalse)
expect(staff.save).to be_falsey 

staffは保存できないと期待して保存できない(結果はfalse)ことをテストしています。

⚫︎補足 to be_trueと to be_false
上の2つはtrue もしくは false でなければいけないものです。
to be_truthyとto be_falseyはtrueっぽい、falseっぽいでもテストをできるみたいです。

matcherについてもっと詳しく知りたい方は下の参考資料から確認してください。

⚫︎参考資料
https://qiita.com/jnchito/items/2e79a1abe7cd8214caa5
https://qiita.com/idaida_idaida/items/eda4a29e5ece5122611b

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?