Symfony4中的单元测试接口测试

Posted 爱你们的小森

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony4中的单元测试接口测试相关的知识,希望对你有一定的参考价值。

前提说明:

symfony 版本 4.1.*,使用  composer create-project symfony/website-skeleton  进行安装。

目标:在一个单元测试用例中对当前工程中的接口进行测试。使用phpUnit。

 

坑1(发送请求使用 browser-kit):

browser-kit 只能对当前的应用进行发送接口请求,而且请求是不经过 index.php 的。

这样导致的问题就是如果当前的应用都是按照官方的指导配置去配置的话,比如数据库连接配置在 .env 中,那么如果请求不经过 index.php 的话,就无法加载 .env 文件。也就无法连接数据库。想实现加载 .env 中配置的话就需要修改框架结构,这对新手是很不友好的。

但是,可以使用 xdebug 进行调试,因为是在同一个进程中。

 

坑2(发送请求使用 curl):

比如使用 GuzzleHttp,这样发送出去的请求是一个真正的 http 请求,因此会完整的按照 http 请求方式去执行,如同一个真正的请求发过来。

这样是会经过 index.php 的,也就无需对框架结构进行调整。 

但是,这样的话由于不是当前的进程,那么如果想使用 xdebug 是不可能的,因为 xdebug 一旦开启监听就会阻塞所有的 php-fpm 进程。

以上是关于Symfony4中的单元测试接口测试的主要内容,如果未能解决你的问题,请参考以下文章

Go单元测试--模拟服务请求和接口返回

5分钟带你利用测试框架优化接口测试(干货)

python接口测试--unittest用例封装

如何使用 EntityType 字段对 Symfony 4 表单进行单元测试

Java单元测试(Junit+Mock+代码覆盖率)

接口测试和单元测试