Open2

expect (var).toで詰まった

にふうちにふうち

成功すればtrueを返すメソッドのrspecを書いた時にちょっとハマった

expect (subject).to be_truthy

と書くと

NoMethodError:
       undefined method `to' for true:TrueClass

と怒られる。

はじめスペースが入っていたことに気づかずあたふたしたが、調べると同じことをissueで建てている人がいいた。

https://github.com/rspec/rspec-rails/issues/1520
https://github.com/rspec/rspec-rails/issues/1520#issuecomment-168852567

expect (true).to

expect(true).to

は解釈が違うらしい。なんでこんな仕様にしたんだ

にふうちにふうち

rubyはrspec記述のスペースも構文として解釈するので

expect (true).to


expect以下の全てを期待値として見る
そのため、

## これは
expect (true).to be_truthy

## こう解釈される
expect((true).to be_truthy)

なるほどなぁ……