RSpec中的嵌套上下文块

时间:2015-10-31 02:54:05

标签: ruby rspec

在其他上下文块中嵌套上下文块似乎不好吗?

例如:

describe "update_management" do
  context "with a typical update" do
    context "when a red flag has been raised" do
      it "" do
      end
    end
    context "when a yellow flag has been raised" do
      it "" do
      end
    end
    etc...
  end
end

2 个答案:

答案 0 :(得分:11)

尽管这是一个老问题,但由于两个原因,我将在此处发布另一个答案:

  1. 这是几乎所有与RSpec上下文嵌套相关的Google最高结果。

  2. 这里唯一的其他答案指向BetterSpecs,它并未明确解决该问题,并且还没有搜索功能...。


CAN 在RSpec中嵌套上下文,它们将起作用。问题在于这是一个两极分化的话题,有些人宁愿远离它。有些人会告诉你这是一个好习惯,其他人会告诉你这不是……没有真正的共识。

老实说,如果嵌套上下文适用于您的用例,则一定要去做。 重要的是,即使嵌套了上下文描述符也很有意义,顺便说一下,这也是一个两极分化的话题,正如您在this issue中看到的那样,它已经开放了半年以上(截至今天)。

尽管BetterSpecs是一个很好的信息来源,但它要么无法提供示例案例,要么就某些人(例如我)而言不够愚蠢。我非常喜欢Jake Goulding's explanations作为对这些文档的补充,您应该查看一下。

答案 1 :(得分:2)

我强烈建议您查看Better Specs,了解在RSpec测试中使用contexts时的最佳做法。您还可以查看rspec-style-guide以了解有关最佳做法的更多信息。