У меня есть конечная точка API, которую я хочу протестировать, она получает полезную нагрузку POST. Конечная точка обычно вызывает библиотеку Omnipay Sage Pay для обработки уведомлений сервера.
Я могу отправить POST на эту конечную точку, используя клиент Postman, но при использовании теста Laravel phpunit, например.
$response = $this->post($url, $data);
Библиотека Omnipay не видит данные публикации?
Я думаю, это потому, что помощник Laravel $this->post
не использует POST-запросы application/x-www-form-urlencoded? Я заглянул за кулисы в $this->post
и, похоже, он напрямую вызывает контроллеры/методы, что имеет смысл.
Ближе всего к этой работе я подошёл к прямому использованию Guzzle (см. ниже), однако это направляет запрос за пределы сеанса «тестирования» и обратно в моё локальное приложение, как я предполагаю? Затем это ломает мои тесты, поскольку я настраиваю некоторые тестовые данные через фабрики перед вызовом POST.
$response = $client->request('POST', $url, ['form_params' => $data]);
Я не совсем уверен, в чем проблема, в моих тестах или в самой библиотеке Omnipay?
application/x-www-form-urlencoded
, вы можете попробовать добавить заголовок в запрос и посмотреть, решит ли это проблему. - person Severin   schedule 30.08.2019