我的问题的要点如下: -
我正在为下面表示为“post_to_embassy”的方法在 Ruby 中编写 Mocha 模拟。为了描述问题,实际方法的作用并不是我们真正关心的。但我需要模拟返回一个动态值。下面的 proc '&prc' 代替实际方法正确执行。但是 Mocha 中的“with”方法只允许返回布尔值。所以下面的代码输出 nil。我需要它来输出通过 orderInfoXml 传递的值。有谁知道我可以使用的替代方法?
require 'rubygems'
require 'mocha'
include Mocha::API
class EmbassyInterface
def post_to_embassy(xml)
puts "This is from the original class:-"
puts xml
return xml
end
end
orderInfoXml = "I am THE XML"
mock = EmbassyInterface.new
prc = Proc.new do |orderXml|
puts "This is from the mocked proc:-"
puts orderXml
orderXml
end
mock.stubs(:post_to_embassy).with(&prc)
mock_result = mock.post_to_embassy(orderInfoXml)
p mock_result
#p prc.call("asd")
输出:-
This is from the mocked proc:-
I am THE XML
nil