Rumah >rangka kerja php >Laravel >Bagaimana untuk menguji tugas berjadual dalam Laravel

Bagaimana untuk menguji tugas berjadual dalam Laravel

PHPz
PHPzasal
2023-04-23 09:17:58843semak imbas

Laravel ialah rangka kerja PHP popular yang digunakan secara meluas dalam pembangunan aplikasi web. Dalam Laravel, tugas berjadual dipanggil penjadualan tugas, yang membolehkan kami mengautomasikan pelaksanaan tugas, seperti melaksanakan tugas pada masa tetap setiap hari. Tetapi, dalam aplikasi praktikal, bagaimana kita menguji tugasan yang dijadualkan? Artikel ini akan memperkenalkan anda kepada cara menguji tugas berjadual dalam Laravel.

Apakah tugas berjadual

Tugas berjadual merujuk kepada tugas yang dicetuskan secara automatik pada masa atau status program tertentu. Ia boleh membantu kami mencapai banyak operasi automatik, seperti menghantar e-mel dengan kerap setiap hari, menyandarkan pangkalan data, mengemas kini cache, dsb. Penjadualan tugas dalam Laravel memerlukan memulakan proses Laravel menyediakan alat baris arahan Artisan untuk mengurus proses ini.

Penjadualan Tugas dalam Laravel

Penjadual tugas dalam Laravel membolehkan kami mentakrifkan tugasan yang dijadualkan dengan mudah dan melaksanakan tugasan secara automatik. Kita hanya perlu menentukan masa pelaksanaan, kekerapan pelaksanaan dan arahan untuk dilaksanakan bagi tugasan tersebut. Laravel menyediakan fungsi penjadualan tugas yang sangat mudah Dengan memanggil kaedah ->cron(), anda boleh mencapai penjadualan tugas setiap minit, jam, hari dan minggu Kod sampel adalah seperti berikut:

$schedule->command('send:remindemail')
         ->daily()
         ->timezone('Asia/Shanghai')
         ->description('send remind email to user');

Di atas kod menunjukkan bahawa setiap hari Laksanakan perintah send:remindemail pada 0:00 waktu Shanghai dan tambahkan teks penerangan pada perihalan tugas.

Ujian penjadualan tugas dalam Laravel

Laravel menyediakan kaedah ujian penjadualan tugas automatik Kami boleh menggunakan Mockery untuk mensimulasikan pelaksanaan tugas, dan kemudian menggunakan alat ujian Laravel sendiri PHPUnit untuk Melaksanakan ujian. Langkah-langkah pelaksanaan adalah seperti berikut:

Langkah 1: Sediakan persekitaran ujian

Kita perlu menyediakan persekitaran ujian sebelum ujian, kerana persekitaran ujian perlu mensimulasikan tugas yang dijadualkan bagi persekitaran pengeluaran. Tetapkan .env kepada APP_ENV dalam fail testing, menunjukkan bahawa persekitaran ujian semasa ialah:

APP_ENV=testing

Langkah 2: Buat kelas ujian

Kita perlu mencipta kelas ujian untuk menguji Tugas penjadual tugas. Kelas ujian boleh melanjutkan kelas IlluminateFoundationTestingTestCase Kod sampel adalah seperti berikut:

namespace Tests;

use Illuminate\Foundation\Testing\TestCase as BaseTestCase;

abstract class TestCase extends BaseTestCase
{
    use CreatesApplication;
}

Langkah 3: Tentukan kaedah ujian

Kita boleh menentukan kaedah ujian dalam kelas ujian. , mula-mula gunakan Mockery untuk mensimulasikan Perintah yang akan dilaksanakan kemudian melaksanakan tugas yang ditakrifkan oleh penjadual tugas. Selepas tugasan dilaksanakan, anda boleh menggunakan satu siri kaedah penegasan yang disediakan oleh PHPUnit untuk menentukan sama ada tugasan telah dilaksanakan dengan betul. Kod sampel adalah seperti berikut:

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
    }
}

Dalam kod sampel di atas, kami mula-mula mensimulasikan arahan SendRemindEmail dan menetapkannya untuk dilaksanakan sekali. Kemudian, kami memanggil penjadual tugas melalui program Artisan dan menunggu pelaksanaan tugas selesai. Akhir sekali, kita boleh menggunakan pelbagai kaedah penegasan yang disediakan oleh PHPUnit untuk menentukan sama ada pelaksanaan arahan berjaya.

Langkah 4: Jalankan ujian

Selepas kami selesai menentukan kes ujian, kami boleh menggunakan arahan PHPUnit untuk menjalankan ujian:

./vendor/bin/phpunit

Semasa proses ujian , Kita boleh memintas proses pelaksanaan tugas oleh penjadual tugas dan menggunakan penegasan untuk menentukan sama ada tugas itu dilaksanakan secara normal.

Ringkasan

Dalam artikel ini, kami memperkenalkan secara ringkas penjadual tugas dalam Laravel dan cara menguji unit penjadual tugas. Tugas berjadual boleh membantu kami merealisasikan banyak operasi automatik dan menjadikan aplikasi kami lebih cekap dan mudah. Pada masa yang sama, ujian yang baik juga membolehkan kita menggunakan tugas yang dirancang dengan lebih yakin dan memastikan tugasan dapat dilaksanakan secara normal.

Atas ialah kandungan terperinci Bagaimana untuk menguji tugas berjadual dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn