Se você tem um comando no Symfony2 que usa serviços da aplicação, como um ORM por exemplo, e seguir o modelo que a documentação do framework fornece para escrever testes unitários, poderá ver erros com os a seguir:
Fatal error: Call to undefined method Symfony\Component\Console\Application::getKernel() in [...]/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ContainerAwareCommand.php on line [...]
ao acessar o kernel da aplicação, a partir do comando, ou:
Fatal error: Call to a member function getParameter() on a non-object in [...]
ao tentar acessar algum método do container
.
O primeiro caso, acontece quando você usa a classe Symfony\Component\Console\Application
ao invés de Symfony\Bundle\FrameworkBundle\Console\Application
. Verifique os uses da sua classe de testes e ajuste se for necessário.
A segunda exceção é lançada quando você está usando a classe Application
correta, mas usando um kernel inválido na sua instanciação. Talvez exista outro modo de fazer isso, mas para mim funcionou extender a classe Symfony\Bundle\FrameworkBundle\Test\WebTestCase
no lugar de \PHPUnit_Framework_TestCase
e construir a aplicação da seguinte forma:
$application = new Application(self::createClient()->getKernel());