[英]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.