私の問題の要点は次のとおりです。
以下の「post_to_embassy」で表されるメソッドの Mocha モックを Ruby で作成しています。問題を説明する目的で、実際のメソッドが何をするかは、私たちの関心事ではありません。しかし、動的な値を返すにはモックが必要です。以下の 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