入出力の期待値Expecting Input / Output
LaravelでexpectsQuestionメソッドを使用すれば、コンソールコマンドのユーザー入力を簡単に「モック」できます。更に、終了コードをassertExitCodeメソッドで、コンソールコマンドに期待する出力をexpectsOutputメソッドで指定することもできます。Laravel allows you to easily "mock" user input for your console commands using the expectsQuestion method. In addition, you may specify the exit code and text that you expect to be output by the console command using the assertExitCode and expectsOutput methods. For example, consider the following console command:
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メソッドを活用してテストできます。You may test this command with the following test which utilizes the expectsQuestion, expectsOutput, and assertExitCode methods:
/**
* コンソールコマンドのテスト
*
* @return void
*/
public function test_console_command()
{
$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);
}