2019-11-26 RSpec の subject! を知る
いまさらながら RSpec の subject! を知る。
let に対しての let! と同様に subject に対しての subject! があった。
subject は必ず評価されるものだと思っていたのだけどそうでもなかった。
it { expect(subject.foo).to ... } はもちろん it { is_expected ... } のような暗黙にでも subject を使うものなら良いのだけど。たとえば subject に提供した double を検査する it { expected(spy_obj).to have_received(:foo) } などがまずい。 subject を使わない場合は評価されないので spy も期待通りには動かない。
何年も使っていて知らないなんてなあ。