Laravel (5.7) Консольные тесты
В последнем уроке мы познакомили вас с HTTP-тестированием. Если вы этого не сделали, просмотрите этот урок.
Этот урок по тестированию консоли будет разбит на две части: введение и ожидаемый ввод / вывод.
Вступление
Laravel не только упрощает HTTP-тестирование, но и предоставляет простой API, который поможет разработчику тестировать консольные приложения, запрашивающие ввод данных у пользователей.
Ожидается ввод / вывод
Инфраструктура Laravel позволит вам легко «смоделировать» пользовательский ввод для ваших консольных команд, используя метод expectedQuestion.
Это еще не все, Laravel делает удобным указание кода выхода и текста, который вы хотите, чтобы вы ожидали получить в качестве результата конкретной консольной команды, используя методы assertExitCode и expectedOutput. Рассмотрим в качестве примера следующую консольную команду:
Artisan::command('question', function () {
$name = $this->ask('Please what is your name?');
$location= $this->ask('where do you live');
$language = $this->choice('Which language do you program in?', [
'PHP',
'Ruby',
'Python',
]);
$this->line('Your name is '.$name.', you live in '.$location.' and you program in '.$language.'.?);
});
Вы можете проверить приведенную выше команду с помощью следующего теста, который будет использовать методы expectedQuestion, expectedOutput и assertExitCode:
* Test a console command.
*
* @return void
*/
public function test_console_command()
{
$this->artisan('question')
->expectsQuestion('What is your name?', 'Aryan Vicky')
->expectsQuestion('where do you live', 'New Delhi')
->expectsQuestion('Which language do you program in?', 'PHP')
->expectsOutput('Your name is Aryan Vicky, you live in New Delhi, and you program in PHP.')
->assertExitCode(0);
}
Теперь давайте расширим область применения теста, чтобы реализовать тест для информации о компании:
Artisan::command('question', function () {
$name = $this->ask('Please what is your company?s name?');
$location= $this->ask(?where is your company located?);
$language = $this->choice('Which language does your company program in?', [
'PHP',
'Ruby',
'Python',
'C#',
'Java',
]);
$employees=$this->choice(?How many employees does your company have??,[
'1-10',
'11-20',
'21-50',
'51-100',
'>100',
]);
$revenue= $this->ask('what is your company's annual revenue');
$this->line('Your company's name is '.$name.', you are located in '.$location.', you have '.$employees.' Employees, your annual revenue is '.$revenue.', and you program in '.$language.'.');
});
Вы можете проверить приведенную выше команду с помощью следующего теста, который будет использовать методы expectedQuestion, expectedOutput и assertExitCode:
* Test a console command.
*
* @return void
*/
public function test_console_command()
{
$this->artisan('question')
->expectsQuestion(' Please what is your company?s name?', 'w3resource')
->expectsQuestion('where is your company located?', 'New Delhi')
->expectsQuestion('Which language does your company program in?', 'PHP')
->expectsQuestion('How many employees does your company have?', '21-50')
->expectsQuestion('what is your company's annual revenue?', '100000')
->expectsOutput(`Your company's name is w3resource, you are located in New Delhi, you have 21-50 Employees, your annual revenue is 100000, and you program in PHP`);
->assertExitCode(0);
}
Новый контент: Composer: менеджер зависимостей для PHP , R программирования