معرفی متد assertFailed در Laravel 11
در لاراول ۱۱، به راحتی میتوانید با استفاده از صفها (Queues) کار کنید و یکی از امکانات جالب آن، متد assertFailed است. این متد به شما این امکان را میدهد تا بررسی کنید که آیا یک کار (Job) در صف با شکست روبرو شده است یا خیر. این قابلیت به ویژه در تستهای واحد (Unit Tests) مفید است، زیرا میتوانید اطمینان حاصل کنید که در صورت بروز خطا در اجرای یک کار، آن خطا به درستی مدیریت شده است.
بیایید فرض کنیم که شما یک کار خاص در لاراول دارید که به دلایلی ممکن است شکست بخورد. به عنوان مثال، فرض کنید که کار شما سعی دارد دادههایی را از یک API دریافت کند و در صورتی که API در دسترس نباشد، این کار باید شکست بخورد. در چنین حالتی، میتوانید از assertFailed
استفاده کنید تا بررسی کنید که آیا این کار واقعاً با شکست مواجه شده است یا خیر.
استفاده از assertFailed
بسیار ساده است. شما فقط باید شناسه (ID) کار خود را به این متد بدهید و لاراول به شما میگوید که آیا آن کار شکست خورده است یا نه. این اطلاعات میتوانند به شما کمک کنند تا در زمان برنامهنویسی اطمینان حاصل کنید که تمامی سناریوهای ممکن در کد شما به درستی اجرا میشوند.
در اینجا مثالی از نحوهی استفاده از این متد خواهیم داشت. در این مثال، قصد داریم یک کار را در صف قرار دهیم و سپس بررسی کنیم که آیا آن کار با شکست مواجه شده است یا خیر.
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Queue;
class YourJobTest extends TestCase {
use RefreshDatabase;
public function test_job_fails() {
// فرض کنید کار شما ما یک Job به نام ExampleJob است
$failedJob = new ExampleJob();
Queue::fake();
// صف را با شغل در حال اجرا پر کنید
$failedJob->handle();
// تأیید میکنیم که کار در صف شکست خورده است
Queue::assertFailed($failedJob);
}
}
توضیح کد
در کد بالا، ما یک کلاس تست به نام YourJobTest
داریم که برای تست کارهای صف تعریف شده است. از use RefreshDatabase;
برای بازنشانی پایگاه داده در هر تست استفاده میکنیم تا با وضعیت تمیزی شروع کنیم.
متد test_job_fails
تعریف شده است که کار را شبیهسازی میکند. ما اولین قدم را اینگونه آغاز میکنیم که یک نمونه از کار مورد نظر را (در اینجا ExampleJob
) ایجاد کنیم.
در مرحله بعد، Queue::fake();
را فراخوانی میکنیم که به ما کمک میکند تا صف را شبیهسازی کنیم و رفتار واقعی را در تستها مخفی کنیم.
سپس با استفاده از $failedJob->handle();
کار را اجرا میکنیم. در اینجا فرض میکنیم که کار با شکست مواجه شده است.
در نهایت، با استفاده از Queue::assertFailed($failedJob);
بررسی میکنیم که آیا کار ما واقعاً با شکست روبرو شده است یا خیر. این بررسی به شما کمک میکند تا از عملکرد صحیح کد خود اطمینان حاصل کنید.