我正在使用rspec來系統測試設備。該設備是模塊化的,因此任何數量的子設備都可以連接到測試設備。有很多地方我想寫測試,它們將循環連接子設備,並在每個設備上運行相同的測試。rspec:如何在第一次失敗後繼續測試
基本上,這就是我想要做的事:
before(:all)
@tool = discover_sub_devices()
@tool.sub_devices.should == exp_sub_device_list
end
describe "some sub device tests" do
@tool.sub_devices.each do |dev|
it "should succeed at doing things" do
dev.do_thing.should == success
end
end
end
可惜,這是行不通的。我收到錯誤說@tool是n,並且在測試運行之前不包含類sub_devices
。因此在before(:all)
塊運行之前正在分析測試。
我可以使其工作的一種方法是將環路放在it
塊內。像這樣:
這樣做的問題是,我真的想測試所有的子設備,即使第一個失敗。我想看看有多少個子設備出現故障的報告。這個代碼一旦失敗就會發生,並且不會測試其餘的代碼。
我意識到這可能不是rspec的正常使用情況,但如果我可以完成這項工作,它對於我們的測試情況會非常方便。
有什麼建議嗎?
偉大的建議,但我似乎無法得到這個工作。 @tool似乎總是零。 – PICyourBrain
我認爲問題在於它內部的@tool塊和外部塊的@tool沒有相同的範圍:( – PICyourBrain
對不起,我忘了實例變量不適用於這種技術。 。 –