RSpec.describe vs describe

All*_*ate 24 ruby rspec ruby-on-rails

我有一段时间以来第一次开始新的Rails项目.在构建模型时,Rspec创建以"RSpec"为基础的描述块

RSpec.describe MyModel do
  ...
end
Run Code Online (Sandbox Code Playgroud)

与旧风格:

describe MyModel do
  ...
end
Run Code Online (Sandbox Code Playgroud)

我已经仔细阅读了更改日志,但必须错过改变的理性吗?

小智 25

通过提交:

努力将猴子补丁降到最低限度.默认的Rails规范生成器不应该使用猴子修补版本describe.

始终只使用非猴子修补RSpec.describe,而不是检查配置,具有以下好处:

  • 当Rails运行生成器时,不需要加载RSpec
  • 没有引入额外的逻辑和状态来处理不同的状态
  • 解决#1048

https://github.com/rspec/rspec-rails/commit/ca0d249858903949052e06884e8e7f9d596cdc79


The*_*sor 23

从Rpec 3开始,您可以describe通过限制域特定语言(dsl)来禁用全局可用性.

使用前缀Rspec.describe确保在实施限制后仍将运行测试.

注意:您仍然不需要前缀,除非您关闭可用性 config.expose_dsl_globally = false

编辑:链接到dsl维基百科