Integrando Symfony2 com o Behat¶
Symfony2 é um Framework para Aplicações Web que pode ser facilmente integrado e perfeitamente utilizado com Behat 3. Como um pré-requisito para este livro de receitas você precisa ter a aplicação Symfony2 funcionando.
Neste livro de receitas nós cobriremos:
- Instalando a dependência do Behat com Composer.
- Inicializando uma suite Behat.
- Instalando e habilitando a extensão Symfony2.
- Acesso aos serviços de aplicação em Contextos.
- Utilizando o cliente de teste Symfony2 como um driver Mink.
Instalando o Behat em seu projeto Symfony2¶
A forma recomendada de gerir a dependência do Behat em seu projeto é usar o Composer. Presumindo que você já tenha o arquivo composer.json em seu projeto você precisa somente adicionar uma nova entrada para ele e instalar. Isto pode ser feito automaticamente para você com este comando:
$ php composer.phar require --dev behat/behat
Note
Note que nós utilizamos a switch --dev para o Composer. Isto significa que o Behat será instalado como uma dependência em seu projeto, e não estará presente em produção. Para mais informações, por favor verifique a documentação do Composer.
Inicializando o Behat¶
Depois de executar este comando você deve ver informações sobre arquivos inicializados em seu projeto, e você deve ser capaz de escrever o seu primeiro cenário. A fim de verificar a inicialização do Behat você pode simplesmente executar o seguinte comando:
$ bin/behat
Tip
Se você não está familiarizado o suficiente com o Behat, por favor leia Construindo Modelo de Domínio primeiro.
Instalando e habilitando a extensão Symfony2¶
Ótimo, você tem uma suite Behat trabalhando em seu projeto, agora é a hora de instalar a Extensão Symfony2. Para fazer isto você precisa adicionar outra dependência, mas da mesma forma que nós o fizemos há algum tempo atrás:
$ php composer.phar require --dev behat/symfony2-extension
Agora é a hora de habilitar a extensão em seu arquivo behat.yml. Se ele não existe, apenas crie este arquivo na raiz do seu projeto e preenchê-lo com o seguinte conteúdo:
default:
extensions:
Behat\Symfony2Extension: ~
Se este arquivo já existe, simplesmente mude o conteúdo adequadamente. A partir deste ponto você deve ser capaz de executar o Behat e a extensão Symfony2 irá ser carregada e pronta para trabalhar.
Acessando serviços de aplicações em contextos¶
A extensão que acabou de ser instalada detecta a configuração padrão do Symfony e permite utilizar seu serviço de aplicação em classes de contexto. Para disponibilizar um serviço em uma contexto você precisa mudar sua configuração behat.yml e dizer a extensão que os serviços injetar:
default:
suites:
default:
contexts:
- FeatureContext:
session: '@session'
extensions:
Behat\Symfony2Extension: ~
Está configuração irá tentar corresponder a $session dependência de seu construtor FeatureContext pela injeção do serviço session no contexto. Seja cuidadoso porque se tal serviço não existir ou seu nome não corresponder, ele não irá funcionar e você terminará com uma exceção.
Utilizando kernelDriver com sua suite Behat¶
Symfony2 te, uma compilação interna de Cliente de Teste, que pode ajudar você com o teste de aceite web, porque não o utilizar? Especialmente devido ao Behat tem uma Extensão Mink que faz este tipo de teste ainda mais fácil.
A vantagem de utilizar o KernelDriver ao invés do Mink driver padrão é que você não precisa executar um servidor web a fim de acessar uma página. Você também sempre pode utilizar o Symfony Profiler e inspecionar sua aplicação diretamente. Você pode ler mais sobre cliente de teste na Documentação do Symfony.
Se você não tem o Mink e a MinkExtension ainda, você pode instalá-los de duas formas:
$ php composer.phar require --dev behat/mink
$ php composer.phar require --dev behat/mink-extension
Para instalar o Driver BrowserKit você precisa executar o seguinte comando:
$ php composer.phar require --dev behat/mink-browserkit-driver
Agora você está há somente uma etapa para estar pronto para fazer uso completo da extensão Symfony2 em seu projeto. Você precisa habilitar a extensão em seu arquivo behat.yml como a seguir:
default:
extensions:
Behat\Symfony2Extension: ~
Behat\MinkExtension:
sessions:
default:
symfony2: ~
Et voilà! Agora você está pronto para você conduzir o seu desenvolvimento de aplicativo Symfony2 com o Behat3!