rspec存根传递相同的参数

时间:2016-09-18 17:37:45

标签: ruby rspec

示例代码:

class Foo
  def initialize(abc)
    @abc = abc
    @bind = bar
  end
  def bar
    SomeClass.new(@abc)
  end
end

现在我想使用rspec和自定义存根来存根:

allow('Foo').to receive(:bar).and_return(FakeBar.new)

问题是FakeBar.new必须使用:bar收到的相同参数进行初始化。是否有可能在我们存根时获取传递给:bar的params的副本并在存根类中重用它们?

1 个答案:

答案 0 :(得分:1)

不确定你为什么要做你正在做的事情(可能有一种更简单的方法),但是它的价值是什么:

allow("Foo").to receive(:bar) { |arg1, arg2| FakeBar.new(arg1, arg2) }

RSpec docs, block stub implementation