تست های کنسول
معرفی
لاراول علاوه بر سادهسازی تست 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);