RSpecでテストカバレッジを上げつつRailsのリファクタリングをしたい場合によく使います。
関数のパラメータをチェック
test.rb
it '#functionにパラメータparamを渡すこと' do
allow(TargetClass).to receive(:function) {
|object, param1|
expect(param1).to eq 'this is parameter'
}
TargetClass.function('this is parameter')
end
パラメータが複数ある場合は |object, param1, param2, paramn|
のように追加します。
関数の引数の数と一致しなくてもエラーは出ません。
ログのチェック
スタブを使うことで実現できます。
ログレベルはテストしたいログに合わせて設定します。
test.rb
it 'ログが出力される' do
allow(logger).to receive(:info)
TargetClass.output_log
expect(logger).to have_received(:info).with('[INFO] 処理を開始しました')
expect(logger).to have_received(:info).with('[INFO] 処理を終了しました')
end