Доступ к объекту запроса в спецификации запроса

Как я могу установить заголовки запроса перед выполнением запроса по спецификации запроса?

Я перемещаю спецификации контроллера, чтобы запросить спецификации моего API с помощью Rails. Я застрял в том, что у меня нет доступа кrequest объект для разрешения запросов.

В моих спецификациях контроллера у меня есть доступ к методу, который я создал, который подписывает определенного пользователя:

def sign_in(user)
  token = user.api_keys.first.token
  # note the request object being used in the next line
  request.env["HTTP_AUTHORIZATION"] = ActionController::HttpAuthentication::Token.encode_credentials(token)
end

Это прекрасно работает на спецификации контроллера, я могу безопасно сделать:

before { sign_in(user) }
it { post :endpoint, params }

Но по запросу спецификацииrequest объект недоступен Если я попытаюсь:

before { sign_in(user) }
it { post "/api/endpoint", params }

я получилrequest на мой вспомогательный метод какnil.

Я знаю, что мог сделать:

it { post "/api/endpoint", {"HTTP_AUTHORIZATION" => ... } }

Но это похоже на хаос в спецификации, особенно по сравнению со спецификацией контроллера.

Я пытался использоватьActionDispatch::TestRequest::DEFAULT_ENV как предложеноэтот ответ, но это тоже не сработало (я получаю401).

Ответы на вопрос(2)

Ваш ответ на вопрос