Pest PHP是否支持PHPUnit的@covers注解?如何用covers方法指定被测方法?
Pest PHP 中 @covers 注解与 covers() 方法的使用
1. 是否支持 PHPUnit 的 @covers 注解
Pest 基于 PHPUnit 构建,完全支持在测试函数的文档块中使用 @covers 注解,用法和 PHPUnit 完全一致。示例:
/** * @covers App\Services\UserService::createUser */ it('creates a user correctly', function () { // 测试逻辑 });
2. covers() 方法指定具体被测方法
Pest 的 covers() 链式方法并非只能传入类名,支持通过「类名::方法名」的格式指定具体被测方法,以下是几种常用写法:
直接传入类名+方法名字符串
it('updates user profile', function () { // 测试逻辑 })->covers('App\Services\UserService::updateProfile');
结合 ::class 语法(类型安全推荐)
use App\Services\UserService; it('updates user profile', function () { // 测试逻辑 })->covers(UserService::class . '::updateProfile');
覆盖多个方法
如果需要覆盖同一类下的多个方法,可以多次调用 covers(),或传入包含多个方法路径的数组:
// 多次调用写法 it('handles user operations', function () { // 测试逻辑 })->covers(UserService::class . '::createUser') ->covers(UserService::class . '::updateProfile'); // 数组写法 it('handles user operations', function () { // 测试逻辑 })->covers([ UserService::class . '::createUser', UserService::class . '::updateProfile', ]);
如果要覆盖整个类的所有方法,直接传入类名即可:
it('tests all user service methods', function () { // 测试逻辑 })->covers(UserService::class);
内容的提问来源于stack exchange,提问作者ITGuy1990
相关产品推荐
相关产品推荐

