rspecでログのテスト備忘録
- Railsの特定のログがinfoで一回だけ呼ばれることをテストしたい
- 処理の途中経過やベンチマーク結果等が出ていることを確認したい
- rspecでRails.logger.should_receive(:info).with(expected).onceのように書きたい
- これだと、infoで呼ばれたすべてのログに対してチェックしてしまう
解決法
- Rails.logger.stub(:info => nil)を使う
- withで渡したログ形式とマッチした回数をテストできる
before do
Rails.logger.stub(:info => nil)
expected = {
:type => "benchmark",
:category => "upload",
:realtime => anything
}
Rails.logger.should_receive(:info).with(expected).once
end