概述
- 折腾了一个上午搞这个单元测试,的亏是通了,不然要面壁去了。
thinkphp6官方并没有支持phpunit的集成使用,不知道为什么,虽然不妨碍我们直接使用phpuint,单局限性很大,我们只能对通用类和不涉及框架层面进行测试,如接口验证之类。这样的单元测试意义并不大,不能注入到核心里面,还不如直接看接口返回得了,造啥测试,既然用了必然是想要代码质量更高的。
打通任督二脉
想要运行并测试框架内部的逻辑,那么怎么引入就成了最大的问题,官方没有说明,这里是基于折腾过的文章进行验证通过的。
主要原理就是,通过构建请求信息Request对象,将其注入到初始化的框架APP里面,要手动初始化框架,如果框架具备的上文,初始化后,通过app对象请求指定的方法和控制器,如此就有了下文。就可以通过下文返回得结果进行断言等操作。
研究thinkphp6的phpunit整合血泪史
https://blog.yongit.com/note/782453.html
首先安装 phpuint
composer require phpunit/phpunit --dev
1.测试控制器方法产出结果
<?php
declare (strict_types=1);
namespace tests;
final class DemoTest extends \PHPUnit\Framework\TestCase
{
/**
* 这里是测试控制的某个方法产出的结果
*
* @test
*/
public function testControllerDemo(): void
{
$request

本文讲述了作者在ThinkPHP6中如何克服官方不支持的挑战,成功整合PHPunit进行单元测试,包括对控制器方法的测试和如何模拟框架内部逻辑。介绍了关键步骤,如创建请求对象注入框架、手动初始化APP以及如何处理模型和服务层测试的问题。
最低0.47元/天 解锁文章
508

被折叠的 条评论
为什么被折叠?



