代码之家  ›  专栏  ›  技术社区  ›  joshweir Raveena

RSpec存根循环中的相同方法

  •  2
  • joshweir Raveena  · 技术社区  · 7 年前

    使用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 回复  |  直到 7 年前
        1
  •  9
  •   Sergio Tulentsev    7 年前

    只需短接一次并提供 all the return values .

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

    第一次 status 'down' . 第二次它会回来 'up' .