кодесурса
«Laravel

Laravel (5.7) Консольные тесты

script1adsense2code
script1adsense3code

В последнем уроке мы познакомили вас с 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code