Laravel中 FeatureTest和 UnitTest的区别是什么
如题
刚接触编写测试代码,看教程写了一些FeatureTest
琢磨着再写一点UnitTest
发现FeatureTest里面使用的很多功能UnitTest里用不了
最后才发现这俩继承的类不同
FeatureTest类继承了Tests\TestCase;
这个类初始化了Laravel容器,Test里面可以借助Laravel的函数写代码
UnitTest类继承了PHPUnit\Framework\TestCase;
这个类没有初始化Laravel容器,很多Laravel的功能是用不了的
我的代码全部都是Controller->Service->Repository->Model的分层结构写的
各个层里的类都依赖了很多上一层或者下一层的类
没有了依赖注入,我怎么去测试Service类的某一个函数?
或者说我对于UnitTest的理解是错的?
或者说我的编码逻辑有问题呢?
想问问大家都是怎么写的
举个栗子吧
如果有一个Model类 MemberProduct
这个类写的时候就已经继承了 Illuminate\Database\Eloquent\Model类
不初始化Laravel,我想New一个这个类都不容易,更没有办法去写测试
如果有一个Service类 MemberService
这个类注入了MemberRepository类,MemberRepository类注入了Member类
不初始化Laravel,Member类我就New不了,初始化MemberService类都困难,怎么才能写测试呢?
本作品采用《CC 协议》,转载必须注明作者和本文链接
一个是单元测试,一个是集成测试后。单元测试侧重于测你写的类,集成测试侧重于测试业务、接口等。
use CreatesApplication;
这里面已经调用laravel的控制台Kernel,所以应该不存在不能用的情况 。
laravel的ioc的c是容器的意思,所以你要用的服务在laravel中是统一放在同一个地方的,如果你要手动取出来你应该这样写,加上注释可以使得ide可以识别你取出来的服务是那个对象。框架集成phpunit,这么多年了,肯定支持你测试的。