如何在Capybara集成测试中访问stdout或stderr

我正在尝试调试一些Capybara集成测试并遇到意想不到的问题。 当我在Capybara测试中设置断点时,我可以检查变量,但我不能调用puts$stdout.puts$stderr.puts 。 要明白我的意思,看看这个输出:

 (rdb:1) "foo" "foo" (rdb:1) puts "foo" nil 

据推测,这是因为Capybara捕获stderr和stdout作为其标准操作的一部分,以便与selenium驱动程序等保持安静。我明白了,但问题是检查ruby调试器中的字符串会逃脱换行符,这使得它无法实现读取HTML等长格式化字符串。

如何使用IO#puts获取对活动终端的引用以输出用于调试目的的内容?

你有没有看过Capybara-cli,也许会帮助你这样做。

https://github.com/vspy/capybara-console