Я построил свою собственную простую команду, которую хочу протестировать.Тестирование/Смещение пользовательских команд консоли
, который в основном выглядит следующим образом:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
class NeatCommand extends Command
{
protected $signature = 'my:neat:command {input_file : path for a json-formatted file to analyze}';
protected $description = 'analyze an array of values';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$inputFile=$this->argument('input_file');
echo $inputFile;
}
}
Так что я написал этот простой тест:
/**
* @test
* @group neat
*/
public function commandShowsHelloWorld()
{
$defaultCommand=Artisan::call('my:neat:command');
}
Я просто хочу, чтобы проверить на данном этапе: есть аргументы отсутствуют. Но когда я запускаю его прямо сейчас, phpunit приносит его как ошибку:
There was 1 error:
1) App\Console\Commands\NeatCommandTest::commandShowsHelloWorld
RuntimeException: Not enough arguments.
Так что мой вопрос. Как я могу издеваться над всем ... или сказать что-то вроде $this->shouldReturn('RuntimeException: Not enough arguments.');
?
Я задаюсь вопросом, почему ваш тест функция не начинается с «тест», а также, почему бы не использовать @expectedException аннотацию из PHPUnit https://phpunit.de/manual/current/en/appendixes.annotations.html# appendixes.annotations.expectedException – Armin
да, я получил работу с ожидаемым результатом. Благодарю. а также @test был там, забыл написать его здесь. – Confidence
Что вы пытаетесь проверить? Если вы пытаетесь протестировать свой код, который выполняет анализ, я бы переместил его в отдельную библиотеку и протестировал его, используя стандартные методы тестирования модулей. Что касается тестирования 'Artisan :: call (...)' - я бы не стал беспокоиться. Рамки (как вызвать команду и т. Д.) Уже были протестированы; то, что не было протестировано, это настраиваемый код, который вы пишете. – Kryten