نسخه:

تست های کنسول

معرفی

لاراول علاوه بر ساده‌سازی تست HTTP، یک API ساده برای آزمایش برنامه‌های کنسولی که از کاربر درخواست می‌کنند، ارائه می‌کند.

انتظار ورودی/خروجی

لاراول به شما اجازه می دهد تا با استفاده از این روش، به راحتی ورودی کاربر را برای دستورات کنسول خود "تقلید کنید" expectsQuestion . علاوه بر این، می توانید کد خروجی و متنی را که انتظار دارید توسط دستور کنسول با استفاده از متدهای assertExitCode و خروجی داده شود را مشخص کنید expectsOutput . به عنوان مثال، دستور کنسول زیر را در نظر بگیرید:

Artisan::command('question', function () {
$name = $this->ask('What is your name?');
 
$language = $this->choice('Which language do you program in?', [
'PHP',
'Ruby',
'Python',
]);
 
$this->line('Your name is '.$name.' and you program in '.$language.'.');
});

می توانید این دستور را با تست زیر که از متدهای expectsQuestion , expectsOutput و استفاده می کند تست کنید assertExitCode :

/**
* Test a console command.
*
* @return void
*/
public function testConsoleCommand()
{
$this->artisan('question')
->expectsQuestion('What is your name?', 'Taylor Otwell')
->expectsQuestion('Which language do you program in?', 'PHP')
->expectsOutput('Your name is Taylor Otwell and you program in PHP.')
->assertExitCode(0);
}

هنگام نوشتن دستوری که انتظار تایید در قالب پاسخ "بله" یا "خیر" را دارد، می توانید از expectsConfirmation روش زیر استفاده کنید:

$this->artisan('module:import')
->expectsConfirmation('Do you really wish to run this command?', 'no')
->assertExitCode(1);