减少对RSpec控制器规格的网络请求,以及如何设置标头

时间:2018-08-10 23:06:27

标签: ruby-on-rails rspec ruby-on-rails-5

我正在运行Rails 5 JSON API服务器。我已经写了一些控制器规格,但是我注意到它们要花很长时间才能运行,并且我正在寻找一种优化方法。

我所了解的一种方法是通过实质上在before(:all)before(:context)块中进行GET / POST请求,然后再添加随后的{{1} }语句测试来自单个网络请求的响应。

我遇到的一个问题是在我的it块中,我似乎无权修改请求标头。例如,当前它的代码如下:

before(:context)

before(:each) do add_authorization_header get :index end 如下:

add_authorization_header

但是当我碰到request.headers['Authorization'] = "Token token=#{some_authorization_token)}" before(:each)时,出现以下错误:

before(:context)

是否可以在NoMethodError: undefined method `headers' for nil:NilClass 块中设置请求标头?

1 个答案:

答案 0 :(得分:1)

我认为您无权访问示例组内的请求对象。试试:

before(:context)
  headers = { "Authorization" => "Token token=#{some_authorization_token)}" }
  get :index, params: {}, headers: headers
end