معرفی متد Bus::assertNothingBatched() در Laravel 11
در لاراول 11، یکی از ویژگیهای مفید و کارآمد، متد Bus::assertNothingBatched()
است که به ما کمک میکند تا از اجرای دستهای تسکها در صف اطمینان حاصل کنیم. برای کسانی که با لاراول کار میکنند، آگاهی از نحوه کار با صفها و تسکها اهمیت زیادی دارد. این متد به ما اجازه میدهد که بررسی کنیم هیچ تسکی به عنوان یک دسته در صف قرار ندارد.
زمانی که ما وظایفی را در صف قرار میدهیم، ممکن است بخواهیم بررسی کنیم که آیا هیچ وظیفهای در همان دسته وجود ندارد یا خیر. اینجا است که Bus::assertNothingBatched()
وارد عمل میشود. با استفاده از این متد، در زمانی که شما در حال نوشتن تستهای واحد هستید، میتوانید به سادگی بررسی کنید که تسکهایی که قرار بوده اجرا شوند به درستی در صف قرار نگرفتهاند.
مثلاً اگر شما یک تسک دارید که قرار است در یک دسته خاص اجرا نشود و شما نیاز دارید تایید کنید که آن تسک در صف نبوده است، Bus::assertNothingBatched()
میتواند این بررسی را برای شما انجام دهد. این متد میتواند به شما این اطمینان را دهد که فراخوانی تابع '../example' این تسک را مشاهده نمیکنید.
استفاده از متد Bus::assertNothingBatched()
در نوشتن تستها سریعتر و موثرتر میکند و همچنین به کدنویسان کمک میکند تا در واقع مطمئن شوند که تسکها در صف با انتظارات آنها تنظیم شدهاند. تستها ابزاری قوی برای حفظ کیفیت کد و نظارت بر رفتار آن هستند، و این متد به خصوص در پروژههای بزرگ و پیچیده که تعداد تسکها زیاد است، خیلی مفید است.
نمونه کد
use Illuminate\Support\Facades\Bus;
// در نوشتن تستهای خود
public function test_batch_jobs()
{
// ابتدا اطمینان حاصل کنید که هیچ تسک دستهای وجود ندارد
Bus::assertNothingBatched();
// کد شما برای قرار دادن تسکها در صف به اینجا میآید
$this->dispatchBatch();
// حالا مجدد تست کنید که هنوز تسکی در صف قرار نگرفته
Bus::assertNothingBatched();
}
توضیح کد
use Illuminate\Support\Facades\Bus;
این خط، فضای نام Bus را در کد ما وارد میکند.
public function test_batch_jobs()
در اینجا یک تابع عمومی به نام
test_batch_jobs
تعریف کردهایم که وظیفه تست رفتار تسکها را بر عهده دارد.Bus::assertNothingBatched();
با این خط، ما تایید میکنیم که در حال حاضر هیچ تسک دستهای در صف وجود ندارد.
$this->dispatchBatch();
این خط وظیفه ماست که تسکها را در صف قرار میدهد. شما باید این قسمت را با تابع واقعی خود جایگزین کنید.
Bus::assertNothingBatched();
در نهایت، دوباره با این خط، بررسی میکنیم که بعد از قرار دادن تسکها، هنوز تسکی در صف وجود ندارد.