我在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个相同错误消息的屏幕。即使你不过度使用像我这样的应该在线的人,你也可能面临同样的问题。最后,它会在某些情况下加快测试速度
答案 0 :(得分:0)
这违背了规范的目的,所以如果没有办法做到这一点我也不会感到惊讶。
规范应该是自给自足的,独立于其他规范(这包括独立于执行顺序)。如果你真的想要/需要维护秩序并在第一次失败的断言时中止,那就让它们成为一个规范。
it do
expect(subject).to be_an Array
expect(subject).to include :something
expect(subject).to include :another
end
啊,我明白了。在这种情况下,您可以使用“快速失败”模式。我想要这个,因为我厌倦了如果主题被窃听(或类似的话),从不同的例子中得到3个相同错误消息的屏幕。
https://relishapp.com/rspec/rspec-core/docs/command-line/fail-fast-option
使用
--fail-fast
选项告诉RSpec停止运行测试套件 第一次失败的测试。您可以添加一个参数来告诉RSpec在N之后停止运行测试套件 测试失败,例如:
--fail-fast=3
。