考虑以下返回两个值的函数(假设它是一个与 class 关联的方法Foo):
def returns_two_things()
// some logic that computes result1 and result 2
return result1, result2
end
我以为我可以这样存根returns_two_things:
allow(@my_foo_instance).to receive(:returns_two_things) \
  .and_return("foo", "bar")
但只有“foo”被返回。我认为该and_return方法用于告诉 rspec 第一次returns_two_things调用时返回“foo”,第二次调用时返回“bar”。这就是returns_two_things我在尝试测试的代码中调用的方式
result1, result2 = @my_foo_instance.returns_two_things()
如何让 rspec 从存根函数返回两个值?
Ruby 没有多值返回。提供的代码示例隐式返回一个包含 2 个元素的数组,即return "foo", "bar"与return ["foo", "bar"].
所以正确的存根方法是:
allow(@my_foo_instance).to receive(:returns_two_things) \
  .and_return(["foo", "bar"])
| 归档时间: | 
 | 
| 查看次数: | 107 次 | 
| 最近记录: |