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 も期待通りには動かない。
何年も使っていて知らないなんてなあ。