存根 returns 多个值 rspec 的方法
Stubbing a method that returns multiple values rspec
考虑以下 return 两个值的函数(假设它是与 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”被 returned。我收集到 and_return
方法用于在第一次调用 returns_two_things
时告诉 rspec 到 return“foo”,第二次调用“bar”。这就是我在尝试测试的代码中调用 returns_two_things
的方式
result1, result2 = @my_foo_instance.returns_two_things()
如何从存根函数中获得 rspec 到 return 两个值?
Ruby 没有多值 returns。代码示例隐式提供了 returns 一个包含 2 个元素的数组,即 return "foo", "bar"
与 return ["foo", "bar"]
.
相同
所以存根的正确方法是:
allow(@my_foo_instance).to receive(:returns_two_things) \
.and_return(["foo", "bar"])
考虑以下 return 两个值的函数(假设它是与 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”被 returned。我收集到 and_return
方法用于在第一次调用 returns_two_things
时告诉 rspec 到 return“foo”,第二次调用“bar”。这就是我在尝试测试的代码中调用 returns_two_things
的方式
result1, result2 = @my_foo_instance.returns_two_things()
如何从存根函数中获得 rspec 到 return 两个值?
Ruby 没有多值 returns。代码示例隐式提供了 returns 一个包含 2 个元素的数组,即 return "foo", "bar"
与 return ["foo", "bar"]
.
所以存根的正确方法是:
allow(@my_foo_instance).to receive(:returns_two_things) \
.and_return(["foo", "bar"])