簡體   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