mocha gem stub方法并分配响应

时间:2015-06-27 03:35:43

标签: ruby-on-rails ruby mocha stub rr

在这个例子中,我使用 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实现这项技术?我搜索了可能的解决方案,但我找不到任何解决方案

1 个答案:

答案 0 :(得分:0)

在mocha中,with允许您指定参数匹配器。您可以传递一个块来对传递给存根方法的参数进行任意测试。

该块应返回true或false,具体取决于参数是否为可接受的值。在这个例子中,我总是返回true,因为你没有指定对什么是有效参数有任何限制。

但重要的是,由于每次调用存根时都会执行块,因此可以在那里执行project_data赋值。像这样:

obj = Object.new
project_data = nil
obj.stubs(:project).with { |x| project_data = x; true }