Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从其他方法调用的测试方法_Ruby_Unit Testing_Rspec_Mocking_Ruby Mocha - Fatal编程技术网

Ruby 从其他方法调用的测试方法

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

我有一个模块数据库,其中包含方法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
  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. 你是在用一个模拟的来做这件事吗?