پردازش FakeInvokedProcess در Laravel 11

laravel 11 fake invoked process 2
06 تیر 1404

مقدمه


سلام به همه! امروز قصد داریم درباره ی یکی از ویژگی های جالب Laravel 11 صحبت کنیم که مربوط به پردازش های فیک میشه. این ویژگی به ما کمک میکنه که در تست های خودمون، به راحتی خروجی های یک پروسه رو شبیه سازی کنیم. یعنی میتونیم بدون اجرای واقعی یک فرمان، از خروجی اون استفاده کنیم. این کار به ما این امکان رو میده که تست های دقیق تری بنویسیم بدون اینکه به سیستم آسیب برسونیم.


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


حالا بریم به سمت نحوه استفاده از این امکانات در Laravel 11. اگر شما هم مثل من به تست نویسی علاقه دارین، این بخش میتونه بسیار جذاب و مفید باشه. ما در ادامه با هم یک مثال عملی خواهیم دید که در آن از FakeInvokedProcess::withOutputHandler استفاده میکنیم. اینجا نشون میدیم که چطور میشه این ابزار رو برای شبیه سازی خروجی یک فرمان خارجی به کار برد.


این قابلیت به طور خاص به ما این امکان رو میده که کنترل بیشتری بر خروجی پروسه ها داشته باشیم. پس بیایید قدم به قدم پیش بریم و با هم یاد بگیریم چطور از این ویژگی استفاده کنیم. بدون شک این روش کمک زیادی به بهبود کیفیت کدها و تست های ما میکنه.


مثال کد


use Illuminate\Testing\Facades\Process;

Process::fake();

Process::withOutputHandler();

$process = Process::run('echo Hello World');

$process->assertOutput("Hello World\n");

توضیح خط به خط کد


use Illuminate\Testing\Facades\Process;

این خط به ما اجازه میده تا از کلاس Process استفاده کنیم که در پکیج تست Laravel وجود داره.


Process::fake();

این خط تمام فراخوانی های پردازش را فیک میکند، یعنی هیچ پروسه واقعی اجرا نخواهد شد.


Process::withOutputHandler();

با این خط، ما خروجی پروسه هایی که شبیه سازی کردیم رو تعیین میکنیم.


$process = Process::run('echo Hello World');

اینجا یک پروسه شبیه سازی شده داریم که از دستور echo برای نمایش متن استفاده میکند. این دستور فقط خروجی را شبیه سازی میکند.


$process->assertOutput("Hello World\n");

در اینجا، ما خروجی پروسه را با خروجی مورد انتظار مقایسه میکنیم تا مطمئن شویم همه چیز درست کار میکند.


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

؟

چطور می‌توانم از FakeInvokedProcess استفاده کنم؟

؟

آیا استفاده از FakeInvokedProcess باعث کاهش سرعت تست‌ها نمی‌شود؟

؟

چگونه می‌توانم خروجی را بررسی کنم؟

؟

چه زمانی باید از این قابلیت استفاده کنم؟