php - 在 Symfony2 控制器中模拟 Guzzle 请求
问题描述
我正在创建一个功能测试,我需要模拟从 Guzzle 发出的请求到外部 API 的响应。我怎样才能模拟这个请求?我找到了模拟请求本身的示例,但我想模拟在另一个请求中发出的请求。
例子:
我有控制器:
use GuzzleHttp\Client;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
class MyController extends Controller
{
public function indexAction(Request $request)
{
$response = Client()->post('http://some.url', [
'form_params' => [
'param1' => 'value1'
]
]);
$result = $this->doSomethingWithTheResponse($response);
return new JsonResponse(['status' => $result], Response::HTTP_OK);
}
}
我有一个测试课:
class MyTestClass extends WebTestCase
{
public function testSomething()
{
$client = static::createClient();
$client->request('GET', 'path_to_my_controller');
$response = json_decode($client->getResponse()->getContent());
$this->assertEquals($response, $expectedResponse);
}
}
如何在控制器内模拟 guzzle 请求,并且仍然$client->request()
在我的测试类中使用?
解决方案
推荐阅读
- scala - 在scala中读取多行作为输入
- spring-data-jdbc - 如何在 spring-data-jdbc 中指定表模式
- ios - 使用 rx 在 collectionView 中单击时如何获取我的单元格?
- c - 查找二维数组中每列的元素数
- alignment - 任何类型的大小总是会是其对齐的倍数吗?
- javascript - 使用 react-redux 成功提交表单后如何重定向
- java - 在 Android SQLite 中,我们是否也应该在 onCreate() 中添加新列?
- c# - 如何在 C# 中使用 Linq 方法语法检索具有相同外键 id 的多个列值?
- windows - 如何在实际打印机上打印文档时另存为 PDF
- image-processing - Richardson-Lucy 没有锐化图像