Laravel 11 TestResponse::assertRedirectToRoute()

laravel 11 testresponse assert redirect to route
12 آذر 1403

آشنایی با TestResponse::assertRedirectToRoute() در لاراول ۱۱


سلام دوستان! تو این مطلب می‌خواهیم درباره‌ی یک ویژگی قشنگ توی لاراول ۱۱ صحبت کنیم که میتونه تو تست‌های شما خیلی به درد بخوره: TestResponse::assertRedirectToRoute(). شاید وقتی که شما به عنوان یک توسعه‌دهنده وب با لاراول کار می‌کنید، انتظار داشته باشید که برنامه‌اتون بعد از یک عملیات خاص، به کدوم مسیر از وب‌سایت ریدایرکت بشه. حالا لاراول این کار رو برای شما آسان کرده و شما می‌تونید به راحتی با تست‌‌های خودتون این قضیه رو چک کنید.


این متد توی تاییدیه‌هایی که تست‌های شما انجام میدن، کار می‌کنه. به این معنا که وقتی شما بخواید بدونید آیا بعد از یک درخواست خاص، برای کاربر به مسیر درست ریدایرکت شده یا نه، می‌تونید از این متد استفاده کنید. این موضوع به شما کمک می‌کنه تا مطمئن بشید که منطق ریدایرکت شما به درستی کار می‌کنه و کاربرها به مسیر مورد نظر هدایت میشن.


برای استفاده از این متد، معمولاً باید بعد از انجام یک درخواست، از TestResponse استفاده کنید. به عنوان مثال، ممکنه شما بخواید بررسی کنید که اگر کاربر یک فرم رو درست پر کرده، به صفحه‌ی موفقیت هدایت بشه. اینجاست که assertRedirectToRoute() به کمک شما میاد و به شما اجازه میده تا به راحتی این مسأله رو تست کنید.


حالا بریم سراغ یک مثال ساده. فرض کنید یک فرم داریم که کاربر با پر کردنش روش ریدایرکت میشه به یک صفحه خاص. ما می‌خوایم مطمئن بشیم که آیا بعد از پر کردن این فرم به درست‌ترین مسیر هدایت میشه یا نه. در کد زیر این کار رو انجام میدیم.


$response = $this->post('/submit-form', [$data]);
$response->assertRedirectToRoute('success.page');

توضیح کد


حالا بیایید کد رو با هم خط به خط بررسی کنیم.



تخصیص $response

در این خط، یک متغیر به نام $response تعریف کردیم که نتیجه‌ی درخواست POST به مسیر /submit-form رو در خودش داره. ما $data رو به عنوان پارامتر به این درخواست ارسال کردیم.



بررسی ریدایرکت

در این خط، از متد assertRedirectToRoute استفاده کردیم تا بررسی کنیم که آیا پاسخ به درستی به مسیر success.page ریدایرکت شده یا نه.


سوالات متداول

؟

چطور می‌تونم مطمئن بشم که بعد از فرم ریدایرکت شدم؟

؟

آیا می‌تونم از assertRedirect() هم استفاده کنم؟

؟

این تست‌ها چه کمکی به من می‌کنن؟