Fork us

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:

  1. Instalando a dependência do Behat com Composer.
  2. Inicializando uma suite Behat.
  3. Instalando e habilitando a extensão Symfony2.
  4. Acesso aos serviços de aplicação em Contextos.
  5. 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!