デバイスのシステム テストに 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 が nill でありsub_devices
、テストが実行される前にクラスが含まれていないというエラーが表示されます。before(:all)
したがって、ブロックが実行される前にテストが解析されます。
機能させる方法の 1 つは、it
ブロック内にループを配置することです。このような:
it "should succeed at doing things" do
@tool.sub_devices.each do |dev|
dev.do_thing.should == success
end
end
この方法の問題は、最初のデバイスが失敗した場合でも、すべてのサブデバイスをテストしたいということです。障害が発生したサブ デバイスの正確な数のレポートを表示したい。このコードは、1 つが失敗するとすぐに抜け出し、残りはテストしません。
これはおそらく rspec の通常の使用例ではないことは承知していますが、これを機能させることができれば、テスト状況にとって非常に便利です。
助言がありますか?