Ruby 从其他方法调用的测试方法
我有一个模块数据库,其中包含方法generate_,这个方法来自旋转循环的_数据库,并调用方法get_length。如何使用rspec或mocha测试get_length是否被调用n次Ruby 从其他方法调用的测试方法,ruby,unit-testing,rspec,mocking,ruby-mocha,Ruby,Unit Testing,Rspec,Mocking,Ruby Mocha,我有一个模块数据库,其中包含方法generate_,这个方法来自旋转循环的_数据库,并调用方法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 fo
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
模块数据库
类长度
您可以这样做:
长度。应接收(:获取长度)。精确(n)。次
更多信息:此:
mock_length = mock("length")
Length.should_receive(:new).exactly(n).times.and_return(mock_length)
mock_length.should_receive(:get_length).exactly(n).times
应该可以工作。我喜欢这样做:Length.should\u receive(:get\u Length)。正好(10)次Database.generate\u from\u Database,我得到了失败:预期为10次,收到0次,但我知道generate\u from\u Database调用10次get\u Length。那么为什么rspec看不到呼叫呢?@Mario。这只是一个偶然的机会,但可能是名称空间的问题?请尝试数据库::长度。@标记。感谢您的支持,但从_数据库生成_的方法不是类长度方法。。也许这是一个错误problem@Mario. 你是在用一个模拟的来做这件事吗?