2

私はモックオブジェクトを設定し、nilのチェックを期待し、falseを返すように指示しました。

status = double('status')
status.should_receive(:nil?).and_return(false)

私はnilへの呼び出しだけを期待していますか?一度発生しますが、rspecテストでエラーが発生し、ステータスがnilになりましたか?2回。

各呼び出しがどこで/どのように発生したかをrspecに表示させる方法はありますか?

'--backtrace'オプションの追加は機能しませんでした。

4

1 に答える 1

4

次のようなものを試してください。

status.should_receive(:nil?).twice { puts caller; false }

これは、2回の呼び出しを許可し、毎回関連するブロックを呼び出すようにrspecに指示します。このcallerメソッドは、で分析できるはずの完全なバックトレースを生成しますstdout。またfalse、テストしているコードパスにとどまります。

2つのバックトレースを区別するのが難しく、2番目の(予期しない)呼び出しにのみ関心がある場合は、2つの連続する期待値を設定します。

status.should_receive(:nil?).and_return(false)
status.should_receive(:nil?) { puts caller; false }

ここで、doubleは最初の呼び出しでfalseを返し、2番目の呼び出しでブロックを呼び出します。

期待に応じて応答を設定するためのリファレンス:
https ://github.com/rspec/rspec-mocks#setting-responses

于 2013-01-31T14:33:53.833 に答える