不太清楚这里发生了什么。我正在从我的另一个项目中移动一些代码,突然,以前的相同规范在新项目中产生错误。所有的错误似乎都与调用存根方法有关。下面是一个示例测试:
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重写存根方法的问题吗?我该如何解决这个问题?
我不知道你用的是哪个版本的摩卡。你有没有试过
@monitor.expects(:monitor_running?).returns(false).at_least_once