如何全局配置 RSpec 以保持打开“--color”和“--format specdoc”选项

Posted

技术标签:

【中文标题】如何全局配置 RSpec 以保持打开“--color”和“--format specdoc”选项【英文标题】:How do I globally configure RSpec to keep the '--color' and '--format specdoc' options turned on 【发布时间】:2010-12-21 15:13:59 【问题描述】:

如何在 Ubuntu 中为 RSpec 设置全局配置。

特别是,--color 和--format specdoc 在我的所有项目中保持打开状态(即每次我在任何地方运行 rspec 时)。

【问题讨论】:

【参考方案1】:

如果您使用 rake 运行 rspec 测试,那么您可以编辑 spec/spec.opts

http://rspec.info/rails/runners.html

【讨论】:

./spec.opts 已被弃用。 Rails 3 希望文件命名为 ./.rspec 或 ~/.rspec【参考方案2】:

或者像我一样简单地将alias spec=spec --color --format specdoc 添加到您的 ~/.bashrc 文件中。

【讨论】:

这个解决方案不是很便携。正确答案是使用.rspec 的@abyx,因为当它在项目中签入时,其他任何获得它的人都将获得相同的设置。 但问题是关于“Ubuntu 中 RSpec 的全局配置”,“在我所有的项目中”既不是便携也不是合作模式。 嗯,我猜你是对的,你的答案确实与 OP 直接相关。我在考虑更大的图景,但我仍然认为更好的答案是@abyx,如果 OP 习惯于正确配置项目,那么其他人将受益,也许不是现在,因为他可能独自工作,但良好的做法就是这样。抱歉,有点啰嗦,只是我的想法。 @zzeroo @Ian :请注意,将.rspec 文件放在用户的主目录中(正如我在回答中提到的)适用于所有用户对rspec 的调用。这实际上比使用别名更可靠,因为用户可能使用的某些 gems/其他别名/工具不一定会使用别名 现在回到这个问题,年纪大了一点,更聪明了,我同意设置 .rspec 点文件现在是一个更好的选择。更新我对 abyx 的批准答案,非常感谢 zzero 在 2010 年最好地回答了我的问题。:)【参考方案3】:

也可以在所有项目中使用spec_helper.rb 文件。该文件应包括以下内容:

RSpec.configure do |config|
  # Use color in STDOUT
  config.color = true

  # Use color not only in STDOUT but also in pagers and files
  config.tty = true

  # Use the specified formatter
  config.formatter = :documentation # :progress, :html,
                                    # :json, CustomFormatterClass
end

任何示例文件都必须要求助手能够使用该选项。

【讨论】:

原问题要求全局配置,这是项目特定的。有用,但不是正确答案,不像 abyx's 指向 .rspec 文件。 搜索有关 RSpec 配置和格式化程序的信息会将其带到此页面,因此我很欣赏这个答案,即使它是针对错误的问题 :-) color_enabled 现在是 color【参考方案4】:

在您的 spec_helper.rb 文件中,包含以下选项:

RSpec.configure do |config|
  config.color_enabled = true
end

然后,您必须在应该使用该选项的每个 *_spec.rb 文件中进行 require。

【讨论】:

您好,谢谢-您能否详细说明以下内容:“然后,您必须在每个 *_spec.rb 文件中都需要使用该选项。”我不明白。 你的每个 *_spec.rb 文件通常以 require "spec_helper" 开头,你不应该忘记这一点。【参考方案5】:

正如您在文档 here 中看到的那样,预期用途是创建 ~/.rspec 并在其中放置您的选项,例如 --color

要使用--color 选项快速创建~/.rspec 文件,只需运行:

echo '--color' >> ~/.rspec 

【讨论】:

--tty 即使在使用寻呼机时也需要颜色。 使用.rspecspec_helper.rb 的优缺点是什么? @shamaoke @christoph ~/.rspec 解决方案的一大优势是可移植性。例如。我们的 CI 服务器不能很好地处理颜色输出。通过用户目录配置文件,我们可以轻松适应不同的环境。 另一个相关注意事项是,您可以在项目级别创建 .rspec 文件并将其仅应用于该项目。只是想有些人可能也想在这里知道。 将我的配置选项从 spec_helper.rb 移动到 .rspec 为我解决了这个问题。【参考方案6】:

需要注意的一点是运行 RSpec 的不同方式的影响。

我试图在 spec/spec_helper.rb 中使用以下代码打开该选项 -

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
    直接调用'rspec' 二进制文件- 或调用'bundle exec rspec' 并检查$stdout.tty?将返回 true。 调用“rake spec”任务 - 或作为“bundle exec rake spec” - Rake 将在单独的进程中调用 rspec,$stdout.tty?将返回 false。

最后,我使用了 ~/.rspec 选项,其中只有 --tty 作为其内容。对我来说效果很好,并保持我们的 CI 服务器输出干净。

【讨论】:

以上是关于如何全局配置 RSpec 以保持打开“--color”和“--format specdoc”选项的主要内容,如果未能解决你的问题,请参考以下文章

配置 RSpec 以对所有请求规范使用 Capybara.javascript_driver

如何在 RSpec 测试中为 ActiveRecord 打开 SQL 调试日志记录?

分页破坏了 RSpec 测试(Kaminari)

编写全局函数以在角度的所有组件中使用

Rspec 测试模型是不是被锁定以进行更新?

在 Rails 的 rspec 中,我如何编写/编辑我的测试文件,以便特定上下文中的示例以设定的顺序运行?