Я пытаюсь проверить приложение Rails с помощью RSpec, но мои тесты не работают, потому что RSpec, похоже, не передает заголовки, которые я передаю Rails.Почему RSpec не передает мои заголовки Rails?
У меня есть UsersController
, который включает в себя ApplicationHelper
, а в ApplicationHelper У меня есть метод, который обращается к кешу headers
. Индексирование его моим SESSION_KEY
заголовком возвращает nil
. Если I puts headers
внутри этого метода, хэш не содержит заголовок, который я поставил, только следующее: {"X-Frame-Options"=>"SAMEORIGIN", "X-XSS-Protection"=>"1; mode=block", "X-Content-Type-Options"=>"nosniff"}
.
Вот соответствующая часть моей RSpec спецификации:
require 'rails_helper'
describe Api::V1::UsersController, type: :request do
let(:user) { User.create(name: 'TestUser', email: '[email protected]', 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
без HTTP_ перед ним, и это не сработало. Я также попытался переместить его на верхнюю часть get
в блок before
, чтобы убедиться, что это проблема контекста, и это тоже не сработало.
Обратите внимание, что '{'HTTP_SESSION_KEY': sess.key} должен быть с hashrocket:' {'HTTP_SESSION_KEY' => sess.key} ' – nsave
@nsave На секунду я подумал, что это могло быть источником моих проблем, но это не ... Любая идея, что может быть? – AppleDash
Кажется, вы делаете два запроса 'get' каждый раз, сначала в блоке' before', а второй - в 'it'. Это намеренно? –