Ruby 如果特定示例未通过,我是否可以防止rspec在组中运行其他示例?

Ruby 如果特定示例未通过,我是否可以防止rspec在组中运行其他示例?,ruby,rspec,Ruby,Rspec,我在rspec core repository()中问了这个问题,但在那之后,我认为这不是提问的合适地方 假设我有一个小组: it { should be_a Array } it { should include :something } it { should include :another } 如果第一个示例失败,我可以阻止rspec运行示例2和3吗? 是的,我知道我可以和他们一起解决这个问题,但仍然 对不起,我的英语不好 UPD。我想补充一些解释。我之所以想要这个,是因为我厌倦了在主

我在rspec core repository()中问了这个问题,但在那之后,我认为这不是提问的合适地方

假设我有一个小组:

it { should be_a Array }
it { should include :something }
it { should include :another }
如果第一个示例失败,我可以阻止rspec运行示例2和3吗? 是的,我知道我可以和他们一起解决这个问题,但仍然

对不起,我的英语不好


UPD。我想补充一些解释。我之所以想要这个,是因为我厌倦了在主题被窃听(或类似的事情)时从不同的示例中获得3个相同错误消息的屏幕。即使你不过度使用像我这样的在线用户,你也可能面临同样的问题。最后,在某些情况下,它只会加快您的测试速度,这与规范的目的背道而驰,因此如果没有办法做到这一点,我也不会感到惊讶

规范应该是自给自足的,独立于其他规范(这包括独立于执行顺序)。如果您真的想/需要维护顺序并在第一次失败的断言时中止,请将它们设置为一个规范

it do
  expect(subject).to be_an Array
  expect(subject).to include :something
  expect(subject).to include :another
end

回复:问题更新 我之所以想要这个,是因为我厌倦了在主题被窃听(或类似的事情)时从不同的示例中获得3个相同错误消息的屏幕

啊,我明白了。在这种情况下,您可以使用“快速故障”模式

使用
--fail fast
选项告知RSpec停止在上运行测试套件 第一次测试失败

您可以添加一个参数,告诉RSpec在N之后停止运行测试套件 失败的测试,例如:
--fail fast=3


这违背了规范的目的,所以如果没有办法做到这一点,我也不会感到惊讶

规范应该是自给自足的,独立于其他规范(这包括独立于执行顺序)。如果您真的想/需要维护顺序并在第一次失败的断言时中止,请将它们设置为一个规范

it do
  expect(subject).to be_an Array
  expect(subject).to include :something
  expect(subject).to include :another
end

回复:问题更新 我之所以想要这个,是因为我厌倦了在主题被窃听(或类似的事情)时从不同的示例中获得3个相同错误消息的屏幕

啊,我明白了。在这种情况下,您可以使用“快速故障”模式

使用
--fail fast
选项告知RSpec停止在上运行测试套件 第一次测试失败

您可以添加一个参数,告诉RSpec在N之后停止运行测试套件 失败的测试,例如:
--fail fast=3


无论如何即使是多行示例:如果您的主题有错误,组中的所有示例都会失败,并出现相同的错误(mb,大范围检查)@Nondv:“组中的所有示例都会失败”-但如果您的主题有错误,则组中的所有示例也会失败。¯\_(ツ)_/“@Nondv:”Oneliners with should是一种更具可读性的方式”-我倾向于同意,但情况并非总是如此。有时安装成本太高。有时您希望维持订单。
--fail fast
仍然不是一种解决方案(但谢谢,我不知道这一点)。“但您案例中的所有示例都是如此。”。如果我能够阻止其他测试运行,则不会。第一个测试失败(因为主题),其他测试将被跳过。无论如何。即使使用多行示例:如果主题中有错误,组中的所有示例都将失败,并出现相同的错误(mb,大范围检查)@Nondv:“组中的所有示例都将失败”-但如果您的主题有错误,您的案例中的所有示例也将如此。”\_(ツ)_/“@Nondv:”Oneliners with should是一种更具可读性的方式”-我倾向于同意,但情况并非总是如此。有时安装成本太高。有时您希望维持订单。
--fail fast
仍然不是一种解决方案(但谢谢,我不知道这一点)。“但您案例中的所有示例都是如此。”。如果我能够阻止其他测试运行,则为否。第一个测试失败(因为主题)其他的都被跳过了。如果一个特定的测试失败,你不想中止,是吗?更像是,你不想得到3屏错误消息?如果一个特定的测试失败,你不想中止,是吗?更像是,你不想得到3屏错误消息?