为什么RSpec按顺序运行示例而不是声明它们?

时间:2014-10-30 12:39:59

标签: ruby rspec

我使用RSpec 2.99并拥有以下简单的spec文件:

describe 'thing' do

  context 'context' do
    it 'one thing' do
      # ...
    end

    it 'another thing' do
      # ...
    end
  end

  it 'without context' do
    # ...
  end

end

输出结果为:

$ bundle exec rspec test_spec.rb -fd

thing
  without context
  context
    one thing
    another thing

Finished in 0.00092 seconds
3 examples, 0 failures

without context之前,我无法弄明白为什么context

它与--order的文档中所写的内容相矛盾:

  

[...]按照定义的顺序执行组和示例[...]

我在这里缺少什么?

更新:在同一文档页面上有一个概念:

  

嵌套组总是从顶层运行到底层[...]

这是否适用于特定情况?如果是这样,事实证明我无法让RSpec在规范文件中运行精确示例(请不要理会为什么我需要它)。

1 个答案:

答案 0 :(得分:4)

文档不准确。示例组运行时,首先是runs its examples,然后是recursively delegates to each of its child example groups。这意味着组的示例将始终在其嵌套示例组之前运行,即使首先定义了一些嵌套组。

但是,对于--order defined,每个类别中的项目将按照定义的顺序运行。

在编写文档时(甚至在命名--order defined选项时),我们并没有记住这一点。

关于我们应该做些什么...我将在the issue you opened上对此进行一些思考。