Rspec文档输出格式

时间:2017-10-27 15:03:09

标签: ruby rspec

根据this piece of documentation,可以通过选择格式documentation来实现以下输出格式:

something
  does something that passes
  does something that fails (FAILED - 1)
  does something that is pending (PENDING: Not Yet Implemented)

是否可以对此进行轻微编辑,使其输出为:

something
  does something (SUCCESS)
  does something (FAIL)
  does something (PENDING)

基本上我希望无论如何显示测试结果 - 而不是仅仅明确记录故障和待处理的故障。

2 个答案:

答案 0 :(得分:1)

我能够通过继承RSpec::Core::Formatters::DocumentationFormatter来做到这一点。将以下文件创建为spec/formatters/custom_formatter.rb

class CustomFormatter < RSpec::Core::Formatters::DocumentationFormatter
  RSpec::Core::Formatters.register self

  private

  def passed_output(example)
    format_output(example, 'SUCCESS', :success)
  end

  def pending_output(example, _message)
    format_output(example, 'PENDING', :pending)
  end

  def failure_output(example)
    format_output(example, 'FAILED', :failure)
  end

  def format_output(example, status_text, code_or_symbol)
    RSpec::Core::Formatters::ConsoleCodes.wrap(
      "#{current_indentation}#{example.description.strip} (#{status_text})",
      code_or_symbol
    )
  end
end

然后使用以下命令运行规范:

rspec --require formatters/custom_formatter --format CustomFormatter

您可以在--require formatters/custom_formatter上使用格式化程序,而不是spec/spec_helper.rb,例如

require_relative 'formatters/custom_formatter'

然后你只需要运行它:

rspec --format CustomFormatter

如果希望CustomFormatter成为默认格式化程序,可以在项目根目录中将命令行选项添加到.rspec configuration file。这是它应该是这样的:

--require spec_helper

--require /path/to/custom_formatter.rb
--format CustomFormatter

这样,您不再需要指定任何命令行参数来使用CustomFormatter

文件和参考文献:

答案 1 :(得分:0)

您无法更改现有的RSpec格式化程序,但可以create your own

  

然而,当RSpec的内置输出格式化器不能提供所有内容时   你需要,你可以编写自己的自定义格式化程序并告诉RSpec使用它   一个而不是。最简单的方法是子类化RSpec的BaseTextFormatter,和   然后只覆盖你想要修改的方法。