我们需要的是运行一个示例,除非所有依赖项都已成功运行。
即:
describe group_example do
it example_1 do
####
end
it example_2 do
####
end
it example_3 do
####
end
example_4 should not run unless example_1, example_2 & example_3
Returns Sucess else return NOT RUN
end
你能告诉我该怎么做吗?
谢谢。此致 Nouha
答案 0 :(得分:4)
这告诉我你需要重新构建你的规范 - 而不是依赖于套件中早期运行的其他规范的成功或失败的规范,考虑明确配置你想为每个规范测试的条件。这就是RSpec提供before
方法的原因。事实上,你并没有真正测试你的应用程序代码 - 你正在测试你的测试套件的行为。
在这种特殊情况下,对于步骤4,将应用程序设置为好像测试1,2和3成功,然后运行特定于步骤4的测试。最好尽可能地隔离测试中的代码,如果你可以帮助它,不要在测试之间引入依赖关系。
答案 1 :(得分:1)
正如@D_Bye所指出的那样,您可以使用before来设置和验证示例组的前提条件,并且可以嵌套示例。
describe "group example" do
it "example 1" do
####
end
it "example 2" do
####
end
it "example 3" do
####
end
context "with preconditions" do
before(:each) do
# Establish the same preconditions as tested by examples
# 1, 2, 3, or mark examples in this context as pending.
begin
####
raise "foo"
rescue RuntimeError => e
pending "preconditions not met: #{e.message}"
end
end
it "example 4" do
####
end
end
end
您还可以filtering仅运行可以运行的示例(例如,取决于已安装的软件)。