RSpec Stub在循环中使用相同的方法

时间:2017-08-16 10:09:48

标签: ruby rspec stub

使用RSpec,我想:

expect(Thing).to receive(:status)
                .with(for: 'something')
                .and_return('down')

在第一次迭代时,相同的存根应在第二次迭代时返回不同的返回值:

expect(Thing).to receive(:status)
                .with(for: 'something')
                .and_return('up')

测试以下代码段时:

2.times do |i|
  break if Thing.status(for: 'something') == 'up'
  sleep 2
  raise MyError if i > 0
end

我该怎么做?

2 个答案:

答案 0 :(得分:6)

只需存根一次并提供all the return values

expect(Thing).to receive(:status)
                .with(for: 'something')
                .and_return('down', 'up')

第一次调用status时,它将返回'down'。第二次它将返回'up'

答案 1 :(得分:1)