如果特定的一个没有通过,我可以阻止rspec在组中运行其他示例吗?

时间:2017-11-10 11:37:32

标签: ruby rspec

我在rspec-core存储库(https://github.com/rspec/rspec-core/issues/2477)中问过它,但在那之后我认为它不适合提问。

假设我有这个小组:

it { should be_a Array }
it { should include :something }
it { should include :another }

如果第一个失败,我可以阻止rspec运行示例2和3吗? 是的,我知道我可以加入其中一个来解决这个问题,但仍然。

抱歉我的英文

UPD。我想对此加一些解释。我想要这个,因为我厌倦了如果主题被窃听(或类似的东西),从不同的例子中得到3个相同错误消息的屏幕。即使你不过度使用像我这样的应该在线的人,你也可能面临同样的问题。最后,它会在某些情况下加快测试速度

1 个答案:

答案 0 :(得分:0)

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

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

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

RE:问题更新

  

我想要这个,因为我厌倦了如果主题被窃听(或类似的话),从不同的例子中得到3个相同错误消息的屏幕。

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

https://relishapp.com/rspec/rspec-core/docs/command-line/fail-fast-option

  

使用--fail-fast选项告诉RSpec停止运行测试套件   第一次失败的测试。

     

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