我有一个要测试的 API 端点,它接收一个 POST 有效负载。端点基本上调用Omnipay Sage Pay库来处理服务器通知。
我可以使用 Postman 客户端很好地发布到这个端点,但是当使用 Laravel phpunit 测试时,例如
$response = $this->post($url, $data);
Omnipay 库看不到帖子数据?
我认为这是因为 Laravel 助手$this->post
不使用 application/x-www-form-urlencoded POST 请求?我看了一下幕后$this->post
,它似乎直接调用了控制器/方法,这是有道理的..
我最接近这项工作的是直接使用 Guzzle(见下文),但是这会将请求路由到“测试”会话之外并返回到我假设的本地应用程序中?这会破坏我的测试,因为我在 POST 调用之前通过工厂设置了一些测试数据。
$response = $client->request('POST', $url, ['form_params' => $data]);
我不太确定问题出在哪里,无论是在我的测试中还是在 Omnipay 库本身中?