ruby - RSpec 中的嵌套上下文 block

标签 ruby rspec

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

例如:

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

最佳答案

虽然这是一个老问题,但出于两个原因,我将在这里发布另一个答案:

  1. 这是几乎所有与 RSpec 上下文嵌套相关的 Google 搜索结果中排名靠前的。

  2. 这里唯一的其他答案指向 BetterSpecs,它没有明确解决这个问题,也没有搜索功能......但是。


可以在 RSpec 中嵌套上下文,它们会起作用。问题是这是一个有点两极分化的话题,有些人宁愿远离它。有些人会告诉你这是一个很好的做法,其他人会告诉你这不是......没有真正的共识 AFAIK。

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

虽然 BetterSpecs 是一个很好的信息来源,但它在提供示例案例方面存在不足和/或对某些人(比如我)来说不够简单。我喜欢Jake Goulding's explanations作为对这些文档的高度评价,您应该检查一下。

关于ruby - RSpec 中的嵌套上下文 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33447583/

相关文章:

Rspec 测试延迟作业

ruby-on-rails - Rspec Controller 测试中的 response.body 返回空字符串

ruby - 有没有一种 Ruby 方法可以删除初始化程序中的样板代码?

css - 在 Rails 4 应用程序中添加 Bootstrap 下拉样式

ruby-on-rails - 保持干燥,但由于不同原因想要重复

ruby-on-rails - '<module:ActiveRecord>':未初始化常量 CarrierWave::Mount (NameError)

ruby - 将 Ruby/EventMachine 脚本作为系统服务运行

Mysql2::Error: 指定的键太长;对于只有 87 个 db 字段的表,最大 key 长度为 767 字节

ruby-on-rails-3 - Rspec 头痛 : configuration advice appreciated

ruby - 为什么必须将对象属性包装在 block 中以检查它是否引发错误?