【发布时间】:2013-09-16 13:04:53
【问题描述】:
我正在使用 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) 块运行之前被解析。
我可以让它工作的一种方法是将循环放在it 块内。像这样:
it "should succeed at doing things" do
@tool.sub_devices.each do |dev|
dev.do_thing.should == success
end
end
这样做的问题是我真的想测试所有子设备,即使第一个失败了。我想查看究竟有多少子设备发生故障的报告。此代码将在一个失败时立即中断,而不是测试其余部分。
我意识到这可能不是 rspec 的正常用例,但如果我能做到这一点,它将非常方便我们的测试情况。
有什么建议吗?
【问题讨论】: