Справочная информация. Я пишу тест функции для проверки реализации аутентификации HMAC. В моем тесте я установил заголовок Authorization: Bearer {token}
и отправил простой запрос GET следующим образом:
$headers = ['Authorization' => 'Bearer '.$token];
$response = $this->get($uri, $headers);
В моем реальном Auth Guard я вставляю объект запроса в конструктор и получаю заголовок:
class HMACGuard implements Guard
{
public function __construct(
UserProvider $provider,
Request $request
) {
$this->request = $request;
$this->provider = $provider;
}
public function user()
{
// ...
$token = $this->request->bearerToken();
// ...
}
}
Это работает с обычными запросами (через браузер или Почтальон и т. Д.). Однако это не работает с юнит-тестами. Но это работает:
public function user()
{
// ...
$token = request()->bearerToken();
// ...
}
Почему внедренная версия отличается и не содержит информации заголовка, как та, что была извлечена из контейнера? Возвращенные объекты, очевидно, отличаются с разными идентификаторами. Как я могу убедиться, что введен правильный экземпляр Request
, который будет содержать всю информацию для любого типа запроса? Есть ли способ убедиться, что я получаю доступ к нужному объекту Request без использования глобальных помощников / фасадов, таких как request()
и Request
?