Как я могу вернуть 2 значения из Rspec Mock? - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь издеваться Open3.capture2, и я хочу вернуть строку и двойник для статуса.Любая идея, как вернуть значение 2?

тестируемый код:

stdout, status = Open3.capture2(command)

if status.success?
  puts stdout
else
  puts stdout
  throw "error: could not execute"
end

spec:

it "throws an error" do
  status = double("status message", :success? => false)
  allow(Open3).to receive(:capture2).and_return("wat?", status)
  ScreenShotWorker.new.perform(url: "www.google.com")
  expect(Open3).to have_received(:capture2)
end

1 Ответ

0 голосов
/ 24 января 2019

Вы возвращаете его как массив:

allow(Open3).to receive(:capture2).and_return(["wat?", status])

, чтобы вы могли визуализировать код как выполняющийся (со значением «200» для статуса):

stdout, status = ["wat", "200"]
stdout #=> "wat"
status #=> "200"

Вот так работает множественное назначение в ruby ​​- метод может возвращать только одно значение, но если это массив, то вы можете использовать множественное присваивание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...