2010-12-01 58 views
0

我有模块数据库,其中包含方法generate_from_database,用于为循环旋转并调用方法get_length。如何通过使用rspec或mocha来测试get_length是否被调用了n次?从其他方法调用的测试方法

module Database 
class Length < ActiveRecord::Base 
    def get_length(i,j) 
    ... 
    end 
end 
def Database.generate_from_database 
    ... 
for i in 0...size 
    for j in 0...size 
    Length.new.get_length(i+1,j+1)) 
end 
end 

回答

0

此:

mock_length = mock("length") 
Length.should_receive(:new).exactly(n).times.and_return(mock_length) 
mock_length.should_receive(:get_length).exactly(n).times 

应该工作。

0

你可以这样类似:

Length.should_receive(:get_length).exactly(n).times

更多信息:http://rspec.info/documentation/mocks/message_expectations.html

+0

我不喜欢的是: Length.should_receive(:get_length).exactly(10).times Database.generate_from_database 和我的失败:预计10,收到0,但我知道,generate_from_database调用10次get_length。那么为什么rspec没有看到呼叫? – Mario 2010-12-01 14:10:32

相关问题