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.
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.
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.
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:
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
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; }
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.
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.
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!