json - 如何以编程方式运行 rspec 测试并捕获输出?

标签 json ruby 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 输出写入该输出而不是标准输出。在这种情况下,输出流始终为空。

有人知道我做错了什么吗?

最佳答案

为了运行一系列 Rspec 测试,我使用 Rake 并记录它们的输出,我使用 RSpec::Core::RakeTask,我可以在其中指定 rspec_opts,您可以使用它传递 rspecs 输出的位置和格式。 示例:

拉克文件

require 'rake'
require 'rspec/core/rake_task'

desc "Run tests, recording their output"

RSpec::Core::RakeTask.new(:spec) do |task|
  task.pattern = 'spec/*_spec.rb' 
  task.rspec_opts = '--format documentation' +
  ' --format json --out logs/output.json' 
end

我在 https://github.com/SamuelGarratt/rake_demo 做了一个基本的 github 项目来演示这一点

上面的 Rakefile 假定您的 rspec 测试位于名为“spec”的文件夹中,并以“_spec”结尾。在命令行中键入“rake spec”以运行所有 rspec 测试并记录其输出。

关于json - 如何以编程方式运行 rspec 测试并捕获输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43553798/

相关文章:

c# - WebAPI 如何在 (.NET) 客户端反序列化异常

ruby-on-rails - Capybara + Rspec如何匹配标签属性的一部分

ruby-on-rails - 回形针/Rspec 测试 : Is there a faster way to test paperclip validates_attachment_content_type?

Javascript 变量在撇号后被 chop

silverlight - 部署前重要 : Remove this line from json2. js

ruby-on-rails - 控制台未加载服务器

ruby-on-rails - 如何在 ruby​​ 中动态调用关联?

ruby-on-rails - 如何使用 Logger.new 创建文件夹(如果不存在)?

ruby - 当从 Ruby 脚本作为命令 %x[rspec] 运行时,如何将 RSpec 输出到控制台?

java - 在 Activity 之间传递和显示 json 数据不起作用?