2013-03-26 175 views
1

不太确定这里发生了什么。我正在从我的另一个项目中移出一些代码,并突然从之前的相同规格中产生新项目中的错误。所有的错误似乎围绕调用存根方法。这里有一个例子测试:Rspec存根导致摩卡错误

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)>' 

我不太清楚是怎么回事。这是摩卡重写存根方法的问题吗?我该如何解决这个问题?!?!?

+0

你在同一个项目中使用RSpec和摩卡吗?也许这会有所帮助? https://www.relishapp.com/rspec/rspec-core/v/2-7/docs/mock-framework-integration/mock-with-mocha – zetetic 2013-03-29 01:30:15

+0

我不使用摩卡,但它是其他宝石的依赖。虽然没有用它来进行我的测试。 – 2013-03-29 21:47:05

回答

0

我不知道你正在使用什么版本的摩卡。你试过类似

@monitor.expects(:monitor_running?).returns(false).at_least_once