为什么RSpec没有将我的标题传递给Rails?

时间:2015-10-11 07:44:49

标签: ruby-on-rails ruby rspec

我正在尝试使用RSpec测试我的Rails应用程序,但是我的测试失败了,因为RSpec似乎没有传递我将它提供给Rails的头文件。

我有一个包含UsersController的{​​{1}},在ApplicationHelper中我有一个访问ApplicationHelper哈希的方法。通过我的headers标头对其进行索引会返回SESSION_KEY。如果我在该方法中nil,则哈希不包含我提供的标头,只包含以下内容:puts headers

以下是我的RSpec规范的相关部分:

{"X-Frame-Options"=>"SAMEORIGIN", "X-XSS-Protection"=>"1; mode=block", "X-Content-Type-Options"=>"nosniff"}

我还尝试在没有HTTP_之前传递require 'rails_helper' describe Api::V1::UsersController, type: :request do let(:user) { User.create(name: 'TestUser', email: 'someone@example.com', password: 'password123', password_confirmation: 'password123') } let(:id) { user.id } let(:sess) { user.sessions.create } before { get "/api/v1/users/#{id}" } # Snipped other tests context 'with authentication' do context 'with a valid id' do it 'returns full user information' do get "/api/v1/users/#{id}", nil, {'HTTP_SESSION_KEY': sess.key} response_user = response_json[:user] expect(response.status).to eq 200 expect(response_user).to_not be_nil expect(response_user[:name]).to eq user[:name] expect(response_user[:email]).to eq user[:email] end end end def response_json JSON.parse(response.body, symbolize_names: true) end end 标头,但这不起作用。我还尝试将其移至SESSION_KEY块中的顶部get以查看它是否是上下文问题,但这也不起作用。

1 个答案:

答案 0 :(得分:1)

文档说上面的内容应该有效,但如果出于某种原因,rspec会将您的测试解释为:controller测试而不是:request测试,那么您需要这样做(就在{{1}之前调用):

get