【发布时间】:2022-12-22 08:07:55
【问题描述】:
当我运行bundle exec rspec 时,我只得到测试失败的报告,但没有标准输出(来自puts,不像this question)。
我不想测试打印的内容,我只是想看看它以了解发生了什么。 没有一个标志可以简单地打印这个内衬吗?
【问题讨论】:
-
标准输出是否被静音/重定向?
标签: ruby-on-rails ruby ruby-on-rails-4 rspec stdout
当我运行bundle exec rspec 时,我只得到测试失败的报告,但没有标准输出(来自puts,不像this question)。
我不想测试打印的内容,我只是想看看它以了解发生了什么。 没有一个标志可以简单地打印这个内衬吗?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 rspec stdout
检查你的日志文件,比如
tail -f log/test.log
【讨论】:
正如 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,所以要找找,因为乍一看可能不明显。
【讨论】: