remarkablemark / rector-laravel-service-mocking
Rector 用于替换过时的 Laravel 服务模拟测试方法
2.0.0
2024-02-26 03:54 UTC
Requires
- php: >=7.4
Requires (Dev)
- friendsofphp/php-cs-fixer: 3.50.0
- phpunit/phpunit: 10.5.11
- rector/rector: 0.19.1
- symplify/rule-doc-generator: 12.1.1
README
Rector 用于替换过时的 Laravel 服务模拟测试方法,例如 expectsEvents
、expectsJobs
和 expectsNotifications
。
从 Laravel 10 开始
已从框架中删除了过时的
MocksApplicationServices
特性。这个特性提供了诸如expectsEvents
、expectsJobs
和expectsNotifications
等测试方法。如果你的应用程序使用了这些方法,我们建议你分别过渡到
Event::fake
、Bus::fake
和Notification::fake
。你可以在你要模拟的组件的相应文档中了解更多关于通过模拟进行伪造的信息。
要求
PHP >=7.4
安装
使用 Composer 安装
composer require --dev rector/rector remarkablemark/rector-laravel-service-mocking
使用方法
在 rector.php
中注册规则
<?php declare(strict_types=1); use Rector\Config\RectorConfig; use Remarkablemark\RectorLaravelServiceMocking\LaravelServiceMockingRector; return static function (RectorConfig $rectorConfig): void { $rectorConfig->paths([ __DIR__ . '/tests', ]); $rectorConfig->rule(LaravelServiceMockingRector::class); };
查看差异
vendor/bin/rector process --dry-run
应用规则
vendor/bin/rector process
清除缓存并应用规则
vendor/bin/rector process --clear-cache
规则
之前
$this->expectsEvents([MyEvent::class]);
之后
\Illuminate\Support\Facades\Event::fake([MyEvent::class])->assertDispatched([MyEvent::class]);
测试可能会因为 assertDispatched
而失败,因此建议重构为
Event::fake([MyEvent::class]); // dispatch your event here... Event::assertDispatched(MyEvent::class);
如果你有多个事件,为每个事件调用 assertDispatched
Event::fake([MyEvent1::class, MyEvent2::class]); // ... Event::assertDispatched(MyEvent1::class); Event::assertDispatched(MyEvent2::class);