【问题标题】:Show STDOUT when running rspec运行 rspec 时显示 STDOUT
【发布时间】:2022-12-22 08:07:55
【问题描述】:

当我运行bundle exec rspec 时,我只得到测试失败的报告,但没有标准输出(来自puts,不像this question)。

我不想测试打印的内容,我只是想看看它以了解发生了什么。 没有一个标志可以简单地打印这个内衬吗?

【问题讨论】:

  • 标准输出是否被静音/重定向?

标签: ruby-on-rails ruby ruby-on-rails-4 rspec stdout


【解决方案1】:

检查你的日志文件,比如

tail -f log/test.log

【讨论】:

    【解决方案2】:

    正如 Stefan 所说,寻找一些可能正在重定向或静音标准输出的代码。我只是遇到了同样的问题,结果我的项目有这段代码:

    def initialize_print
      @previous_stdout = $stdout
      @previous_stderr = $stderr
      $stdout = StringIO.new
      $stderr = StringIO.new
    end
    
    def finalize_print
      unless passed?
        STDOUT.puts $stdout.string if $stdout.string
        STDERR.puts $stderr.string if $stderr.string
      end
      $stdout = @previous_stdout
      $stderr = @previous_stderr
    end
    

    然后每个测试都在 setup/teardown 中调用这些。不好找,因为在各个地方都有定义,其中一个是项目外部的gem,所以要找找,因为乍一看可能不明显。

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2022-01-02
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 2011-11-13
      相关资源
      最近更新 更多