1

ここで何が起こっているのかよくわかりません。私の別のプロジェクトからいくつかのコードを移動していますが、突然、以前と同じ仕様が新しいプロジェクトでエラーを生成しています。すべてのエラーは、スタブ メソッドの呼び出しに関連しているように見えます。テストの例を次に示します。

it "retrieves active workers from Redis" do
    @monitor.should_receive(:monitor_running?).and_return(false)
    REDIS.should_receive( :smembers ).with( 'leaderboard-workers' ).and_return( [] )
    @monitor.perform
end

これは機能します。ただし、最初のテスト行を次のように切り替えると:

  @monitor.stub(:monitor_running?).and_return(false)

次のエラーが発生します。

 1) LeaderboardMonitor#perform retrieves active workers from Redis
 Failure/Error: @monitor.stub(:monitor_running?).and_return(false)
 Mocha::ExpectationError:
   unexpected invocation: #<Mock:0x7fcc18c8bab8>.and_return(false)
   satisfied expectations:
   - allowed any number of times, not yet invoked: #<Mock:0x7fcc18c8bab8>.monitor_running?(any_parameters)
 # ./spec/workers/leaderboards/leaderboard_monitor_spec.rb:58:in `block (3 levels) in <top (required)>'

ここで何が起こっているのかよくわかりません。これはスタブ メソッドをオーバーライドする Mocha の問題ですか? これを回避するにはどうすればよいですか?!?!?

4

1 に答える 1

0

使用しているモカのバージョンがわかりません。次のようなことを試しましたか

@monitor.expects(:monitor_running?).returns(false).at_least_once
于 2013-03-30T02:12:21.897 に答える