В Symfony2, как вы издеваетесь над компонентом консоли, который потребляет другой компонент ConsoleComponent

Я пишу консольный компонент с использованием библиотек Symfony2, который использует другое приложение, которое также написано с консольными компонентами symfony2.

Я хочу издеваться над другим компонентом консоли приложения, как мне добиться этого? Приложение, которое я создаю, просто использует существующую команду из другого приложения:

В основном, как вы пишете модульный тест для кода ниже:

protected function execute(InputInterface $input, OutputInterface $output)
{
$command = $this->getApplication()->find('demo:greet');

$arguments = array(
'command' => 'demo:greet',
'name'    => 'Fabien',
'--yell'  => true,
);

$input = new ArrayInput($arguments);
$returnCode = $command->run($input, $output);

// ...
}

1

Решение

Другое приложение или такое же приложение?

$commandMock = $this->getMock('Symfony\Component\Console\Command\Command');
$commandMock->expects($this->once())->method('run')->with(...)->will($this->returnValue(1));

$applicationMock = $this->getMockBuilder('Symfony\Component\Console\Application')
->disableConstructor()->getMock();
$applicationMock->method('find')
->with($this->equalTo('demo:greet'))
->will($this->returnValue($commandMock));

Вы просто смоделируете команду и смоделируете приложение, чтобы вернуть смоделированную команду.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]