在这个例子中,我使用rrgem,并在这里存根一个对象方法obj.project,当从任何其他方法或类调用该方法时,将返回值分配给任何变量(在本例中为project_data)。
obj = Object.new
project_data = nil
stub(obj).project { |*x| project_data = x }
当我调用任何使用obj调用项目方法的方法时,project_data将由obj.project方法的返回值赋值。有什么方法可以用mochagem实现这种技术吗?我在谷歌上搜索了可能的解决方案,但我找不出任何解决方案
在mocha中,with
允许您指定参数匹配器。您可以传递一个块来对传递给存根方法的参数进行任意测试。
根据参数是否为可接受值,块应返回true或false。在这个例子中,我总是返回true
,因为您并没有指定什么是有效参数有任何限制。
然而,重要的一点是,由于每当调用存根时都会执行块,因此可以在那里执行project_data
赋值。像这样:
obj = Object.new
project_data = nil
obj.stubs(:project).with { |x| project_data = x; true }