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