使用RSpec输出HTTP请求/响应数据

时间:2015-04-25 23:33:00

标签: ruby-on-rails rspec

我有一个rails项目,它使用RSpec编写的测试来提供JSON API。通常在运行规范(特别是请求规范)时,我有兴趣看到有关HTTP请求/响应的一些细节......即。请求URL,请求正文和响应正文,理想情况下JSON格式相当于可读性。这不是出于文档的目的,而是作为开发/调试过程的一部分。

我有一个我写过的辅助方法,它可以做到这一点......你只需要将一个方法调用放到你的规范中,然后打印出这些东西。

但是,如果有一个开关是运行规格的一部分,似乎会更好。 RSpec有自定义格式化程序,我认为可能是正确的方向,但在尝试构建一个格式化程序时,我无法弄清楚如何从规范内部访问请求/响应对象。

如何在自定义RSpec格式化程序中访问请求/响应对象?或者,也许是另一种解决问题的方法?

1 个答案:

答案 0 :(得分:0)

这是一种方法:

假设一个rails项目,在spec_helper.rb中,定义一个全局“after”钩子,如下所示:

config.after(:each) do #runs after each example
  if ENV['PRINTHTTP']
    #use request/response objects here, e.g. puts response.status
  end   
end

然后,您可以通过在命令行上添加环境变量来有条件地启用:

$ PRINTHTTP=1 rspec