2
我正在尝试以编程方式运行一系列Rspec测试并捕获每个的输出。如何以编程方式运行rspec测试并捕获输出?
我到目前为止是这样的:
RSpec.configure do |config|
config.formatter = :json
end
out = StringIO.new
err = StringIO.new
RSpec::Core::Runner.run([file], err, out)
这并不正确运行指定文件,并在终端,我运行此脚本,从我看到的JSON输出,我希望......但由于我给跑步者一个StringIO
流,我期望它将JSON输出写入该流而不是stdout。在这种情况下,出站流总是空的。
任何人有任何想法我做错了什么?
您可以将所有转至'$ stdout'的内容写入文件。如果有帮助 http://stackoverflow.com/questions/26894443/intercepting-all-puts-and-print-statements-from-a-ruby-program –
我试过做类似的做$ stdout = StringIO.new',但我仍然在屏幕上获得输出,并且$ stdout中没有任何内容,它是一个空白的StringIO对象。 –
我最终解决了这个问题,因为我只需要知道规范是否失败,并且run函数在成功时返回0,在失败时返回1。仍然不知道为什么输出流看起来不起作用。 –