remarkablemark/rector-laravel-service-mocking

Rector 用于替换过时的 Laravel 服务模拟测试方法

2.0.0 2024-02-26 03:54 UTC

This package is auto-updated.

Last update: 2024-09-09 02:29:10 UTC


README

packagist test

Rector 用于替换过时的 Laravel 服务模拟测试方法,例如 expectsEventsexpectsJobsexpectsNotifications

Laravel 10 开始

已从框架中删除了过时的 MocksApplicationServices 特性。这个特性提供了诸如 expectsEventsexpectsJobsexpectsNotifications 等测试方法。

如果你的应用程序使用了这些方法,我们建议你分别过渡到 Event::fakeBus::fakeNotification::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);

许可协议

MIT