繁体   English   中英

存根返回多个值的方法 rspec

[英]Stubbing a method that returns multiple values rspec

考虑以下 function 返回两个值(假设它是与 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 第一次返回“foo”返回returns_two_things ,第二次返回“bar”。 这就是我在尝试测试的代码中调用returns_two_things的方式

result1, result2 = @my_foo_instance.returns_two_things()

如何让 rspec 从存根 function 返回两个值?

Ruby 没有多值返回。 提供的代码示例隐式返回一个包含 2 个元素的数组,即return "foo", "bar"return ["foo", "bar"]相同。

所以正确的存根方法是:

allow(@my_foo_instance).to receive(:returns_two_things) \
  .and_return(["foo", "bar"])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM