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