2013-03-26 176 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