Heim > Artikel > PHP-Framework > So testen Sie geplante Aufgaben in Laravel
Laravel ist ein beliebtes PHP-Framework, das häufig bei der Entwicklung von Webanwendungen verwendet wird. In Laravel werden geplante Aufgaben als Aufgabenplanung bezeichnet, wodurch wir die Aufgabenausführung automatisieren können, beispielsweise die Ausführung einer Aufgabe jeden Tag zu einer festen Zeit. Aber wie testen wir geplante Aufgaben in praktischen Anwendungen? In diesem Artikel erfahren Sie, wie Sie geplante Aufgaben in Laravel testen.
Eine geplante Aufgabe bezieht sich auf eine Aufgabe, die automatisch zu einem bestimmten Zeitpunkt oder Programmstatus ausgelöst wird. Es kann uns dabei helfen, viele automatisierte Vorgänge zu realisieren, z. B. das regelmäßige Versenden von E-Mails pro Tag, das Sichern von Datenbanken, das Aktualisieren von Caches usw. Das Planen von Aufgaben in Laravel erfordert das Starten eines Prozesses. Laravel stellt das Artisan-Befehlszeilentool zur Verwaltung dieser Prozesse bereit.
Der Aufgabenplaner in Laravel ermöglicht es uns, geplante Aufgaben einfach zu definieren und Aufgaben automatisch auszuführen. Wir müssen lediglich die Ausführungszeit, die Ausführungshäufigkeit und den auszuführenden Befehl der Aufgabe definieren. Laravel bietet eine sehr praktische Aufgabenplanungsfunktion. Durch Aufrufen der Methode ->cron()
können Sie Aufgaben jede Minute, jede Stunde, jeden Tag und jede Woche planen : ->cron()
方法可以实现每分钟、每小时、每天以及每周的任务调度,示例代码如下:
$schedule->command('send:remindemail') ->daily() ->timezone('Asia/Shanghai') ->description('send remind email to user');
以上代码表示,每天在上海时间的0点执行 send:remindemail
命令,并在任务描述中添加了说明文字。
Laravel中提供了一种自动化的任务调度测试方法,我们可以使用Mockery模拟任务的执行,然后通过Laravel自带的测试工具PHPUnit来实现测试。实现步骤如下:
我们需要在测试前先设置测试环境,因为测试环境需要模拟生产环境的定时任务。在 .env
文件中设置 APP_ENV
为 testing
,表示当前是测试环境:
APP_ENV=testing
我们需要创建一个测试类来测试任务调度器的工作。测试类可以扩展 IlluminateFoundationTestingTestCase
类,示例代码如下:
namespace Tests; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; abstract class TestCase extends BaseTestCase { use CreatesApplication; }
我们可以在测试类中定义测试方法,先使用 Mockery
模拟要执行的命令,然后执行任务调度器的定义任务。在任务执行完毕后,可以使用 PHPUnit 提供的一系列断言方法来判断任务是否被正确执行。示例代码如下:
namespace Tests\Feature; use App\Console\Commands\SendRemindEmail; use Tests\TestCase; use Mockery; use Illuminate\Support\Facades\Artisan; class TaskSchedulerTest extends TestCase { public function testTaskScheduler() { // Arrange $remindEmailCommandMock = Mockery::mock(SendRemindEmail::class); $remindEmailCommandMock->shouldReceive('handle')->once(); $this->app->instance(SendRemindEmail::class, $remindEmailCommandMock); // Act Artisan::call('schedule:run'); // Assert // add your assertions here } }
在上述示例代码中,我们首先模拟了 SendRemindEmail
命令,并设置该命令比如会被执行一次。然后,我们通过 Artisan
./vendor/bin/phpunitDer obige Code gibt an, dass der Befehl
send:remindemail
jeden Tag um 0:00 Uhr Shanghaier Zeit ausgeführt wird und der Aufgabenbeschreibung erklärender Text hinzugefügt wird. Aufgabenplanungstest in LaravelLaravel bietet eine automatisierte Aufgabenplanungstestmethode. Wir können Mockery verwenden, um die Ausführung der Aufgabe zu simulieren, und dann das Testtool von Laravel verwenden PHPUnit wird zur Implementierung von Tests verwendet. Die Implementierungsschritte sind wie folgt: Schritt 1: Einrichten der Testumgebung Wir müssen die Testumgebung vor dem Testen einrichten, da die Testumgebung das simulieren muss geplante Aufgaben der Produktionsumgebung. Setzen Sie APP_ENV
in der Datei .env
auf testing
, um anzuzeigen, dass es sich derzeit um eine Testumgebung handelt: rrreee
Schritt 2: Testklasse erstellen#🎜🎜##🎜🎜#Wir müssen eine Testklasse erstellen, um die Arbeit des Aufgabenplaners zu testen. Die Testklasse kann die KlasseIlluminateFoundationTestCase
erweitern. Der Beispielcode lautet wie folgt: #🎜🎜#rrreee#🎜🎜#Schritt 3: Definieren Sie die Testmethode #🎜🎜##🎜🎜#Wir können definieren Verwenden Sie als Testmethode in der Testklasse zunächst Mockery
, um den auszuführenden Befehl zu simulieren, und führen Sie dann die vom Taskplaner definierte Aufgabe aus. Nachdem die Aufgabe ausgeführt wurde, können Sie eine Reihe von Assertionsmethoden verwenden, die von PHPUnit bereitgestellt werden, um festzustellen, ob die Aufgabe korrekt ausgeführt wurde. Der Beispielcode lautet wie folgt: #🎜🎜#rrreee#🎜🎜#Im obigen Beispielcode haben wir zunächst den Befehl SendRemindEmail
simuliert und den Befehl so festgelegt, dass er einmal ausgeführt wird. Dann rufen wir den Aufgabenplaner über das Programm Artisan
auf und warten, bis die Aufgabenausführung abgeschlossen ist. Schließlich können wir die verschiedenen von PHPUnit bereitgestellten Assertionsmethoden verwenden, um festzustellen, ob die Befehlsausführung erfolgreich ist. #🎜🎜##🎜🎜#Schritt 4: Führen Sie den Test aus #🎜🎜##🎜🎜#Nachdem wir mit der Definition des Testfalls fertig sind, können wir den PHPUnit-Befehl verwenden, um den Test auszuführen: #🎜🎜#rrreee#🎜🎜# Während des Tests können wir den Aufgabenausführungsprozess des Aufgabenplaners abfangen und mithilfe von Behauptungen feststellen, ob die Aufgabe normal ausgeführt wird. #🎜🎜##🎜🎜#Zusammenfassung#🎜🎜##🎜🎜#In diesem Artikel stellen wir kurz den Taskplaner in Laravel vor und zeigen, wie man den Taskplaner einem Unit-Test unterzieht. Geplante Aufgaben können uns dabei helfen, viele automatisierte Vorgänge zu realisieren und unsere Anwendungen effizienter und komfortabler zu gestalten. Gleichzeitig können wir durch gute Tests auch geplante Aufgaben sicherer nutzen und sicherstellen, dass Aufgaben normal ausgeführt werden können. #🎜🎜#Das obige ist der detaillierte Inhalt vonSo testen Sie geplante Aufgaben in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!