Rspec测试 - 继续执行方法,直到不再引发错误消息

时间:2015-02-10 09:44:09

标签: ruby rspec

我是Rspec的新手,很抱歉,如果这是一个糟糕的问题。在我正在运行的一个测试测试中,我有使用随机数生成器来确定是否应该执行方法的代码。如果无法执行,则该方法会引发错误消息。

所以我需要编写一个测试,它继续在一小组类对象上运行该方法,直到它不再收到错误消息。因此,实际上每个类对象最终会在几次尝试后成功执行该方法。

该数组有6个项目。我希望我需要循环遍历每一个然后使用while循环,然后测试是否已执行错误消息,但我还没有弄清楚如何。感谢任何帮助。

我现在有这样的事情......

 def create_planes
    6.times do
      plane=Plane.new
      planes<<plane
    end  
  end

  it 'should land each plane' do
    create_planes

    i = 0
    while i<planes.count
      begin
        airport.plane_land(planes[i]) 
        i++
      rescue  
        next
      end 
    end

    expect(airport.plane_count).to eq(6)
  end 

1 个答案:

答案 0 :(得分:1)

通常使用RSpec,您将设置输入并测试输出。在发生错误之前你不会执行,你会执行已知数量的土地,然后检查机场的飞机是否改变了你的预期。

it "should maintain a list of landed planes" do
  expect {
    3.times { airport.plane_land Plane.new }
  }.to change { airport.plane_count }.from(0).to(3)
end