LoginSignup
10
1

More than 5 years have passed since last update.

RSpecのbe_falseyは、falsyでもよい

Last updated at Posted at 2018-08-14

RSpecのbe_falsey、じつはeがなくてbe_falsyでも良いということを知った話。

be_falseyが覚えづらい

RSpecのmatcherで、falseないしfalseとみなせる値(nilとか)の時OKになるbe_falseyというのがあります。
https://relishapp.com/rspec/rspec-expectations/docs/built-in-matchers/be-matchers#be-falsey-matcher

このつづりがなんか覚えづらい。
JavaScriptでは、同様の概念が"Falsy"として出てきます。
https://developer.mozilla.org/ja/docs/Glossary/Falsy

falsy は falsey と書かれることもありますが、通常、英語においては単語を~yの形で形容詞化する際、末尾の e を省きます(noise → noisy, ice → icy, shine → shiny)

だよね? 普通e書かないよね? だから覚えづらかったんだ!

プログラマに寛容なRuby界でこういう主張が放置されていることは少なくて、何らかの形でカバーされているはず...

#be_falsey ⇒ Object (also: #be_falsy, #a_falsey_value, #a_falsy_value)

ほらね! ( https://www.rubydoc.info/github/rspec/rspec-expectations/RSpec/Matchers )

ということで、RSpecでは、be_falsyと書くこともできます。とはいえ公式ドキュメントがbe_falseyだから、be_falsey推しぽい...

追加情報

RSpec入門のQiita記事などで高名な @jnchito さんから情報を頂きました。
https://twitter.com/jnchito/status/1029135299295686656

もともと使えた

誰かが「be_falsyがいいよ」といったから使えるようになったわけではなく、be_falseyが使えるようになったときからすでにaliasが用意されていたみたいです。

In RSpec 3, we've renamed these to be_truthy and be_falsey (or be_falsy, if you prefer that spelling) to make their semantics more explicit and to reduce confusion with be true/be false
( Notable Changes in RSpec 3 http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/ )

公式はbe_falseyぽい

be_truthy/be_falseyが導入されたときのissueがこちら。

RSpecメインメンテナのMyronさんの発言。

I don't have a strong opinion on be_falsy vs be_falsey. falsey seems to be the more common term based on number of google results, though:
(私訳: be_falsyかbe_falseyについて強い意見はないよ。でもググった感じだとfalseyのほうが一般的な用語みたいだね )

falsey

ということで、どっちでも良かったけど、当時はfalseyのほうが一般的だからfalseyにしようぜ、ということだったみたいです。

上がっているスクリーンショットを見ると、当時はまだJS界でもfalsey派とfalsy派がいたのがのちにfalsy派に統一されて現代の状況が生まれてしまったみたいですね。どこかで統一されてくれると嬉しいなあ。

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