【问题标题】:How can I configure rspec to show output with spork?如何配置 rspec 以显示带有 spork 的输出?
【发布时间】:2014-03-07 00:57:29
【问题描述】:

我运行了 spork 来加速我的测试,但是运行它们时没有输出。有需要修改的配置吗?

【问题讨论】:

    标签: rspec spork


    【解决方案1】:

    刚刚也遇到了这个问题,在 spork 1.0.0rc4 和 rspec 2.14.1 / rspec-core 2.14.8 上运行。据我所知,问题出在以下几点:

    1. Spork 将 $stdout 配置为指向 localhost:port(drb 客户端),以便将所有报告器输出发送到 drb 客户端。这现在发生在 Spork.prefork 运行之后。
    2. 在我的 Spork.prefork 块中,我(自然)在执行 RSpec.configure do |config|,其中一个配置调用(特别是 config.mock_with :rr)导致了一系列调用,最终导致要初始化 RSpec.configuration 中的报告器/格式化程序 - 但没有不正确的标准输出。
    3. RSpec.configuration 有一个 reset 方法(标记为 @private 但可惜),它刷新初始化的报告器/格式化程序,以便延迟重新初始化。
    4. 此外,不知何故 RSpec.configuration.output_stream 从未设置。底线,将此代码添加到 Spork.each_run 似乎可以解决问题:

      if Spork.using_spork?
          RSpec.configure do |config|
              config.reset
              config.output_stream = $stdout
          end
      end
      

    如果有人知道更优雅的方法来解决这个问题,请告诉!

    【讨论】:

    • 谢谢!当我从命令行运行 rspec 时,这确实有效。但是,当我从 vim 运行我的规范时,我仍然看不到任何输出。似乎我只需要找出正确的方法来为 vim 设置 output_stream。
    • 在你的 Spork.each_run 中放一个断点,看看 $stdout 设置了什么,你可能确实需要玩它。另外,我意识到上面的块应该在 if Spork.using_spork?这样它就不会影响 CI 性能等(在没有 spork 的情况下运行)。
    • 有同样的问题,但在我的情况下config.output_stream = $stdout 解决了它。谢谢
    【解决方案2】:

    @astgtciv 已经回答了这个问题,但是我遇到了一个相关的事情,它太长了,不能写成评论:

    使用@astgtciv 的修复对我有用,但是当我引入自定义格式化程序时它又坏了。我的猜测是格式化程序在 Spork 启动时被初始化,所以它的输出流在 DRB 服务器窗口而不是测试运行程序窗口中。

    我的解决方法是将attr_accessor :output 添加到我的自定义格式化程序中,然后更改Spork.each_run 中的输出,例如:

    rspec_formatters = RSpec.configuration.formatters
    
    Spork.each_run do
      if Spork.using_spork?
        RSpec.configure do |config|
          config.output_stream = $stdout
        end
    
        rspec_formatters.each do |formatter|
          if formatter.respond_to?(:output=)
            formatter.output = $stdout
          end
        end
      end
    end
    

    更简单的解决方法是在此代码块中添加格式化程序,但我认为这可能会更快(就测试运行速度而言)并且不会冒险多次添加相同的格式化程序。但尚未验证该猜测。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      相关资源
      最近更新 更多