mocha gem 存根方法和分配响应

mocha gem stub method and assign response

在这个例子中我使用了rrgem,并在此处存入一个对象方法obj.project,并将返回值赋给任何变量(在这种情况是 project_data )当从任何其他方法或 class.

调用该方法时
  obj = Object.new
  project_data = nil

  stub(obj).project { |*x| project_data = x }

当我调用任何使用obj 调用项目方法的方法时,project_data 将由obj.project 方法的返回值赋值。有什么方法可以用 mocha gem 来实现这个技术吗?我用谷歌搜索了可能的解决方案,但我找不到任何解决方案

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

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

然而重要的一点是,由于只要调用存根就会执行该块,因此您可以在那里进行 project_data 赋值。像这样:

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