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

时间:2010-12-01 09:25:13

标签: ruby unit-testing mocking rspec mocha

我有模块数据库,其方法为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

2 个答案:

答案 0 :(得分:0)

你可以这样:

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

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

答案 1 :(得分: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

应该有用。