64x64 icon dark hosting
Choose a hosting plan here and get a free year's subscription to Tuts+ (worth $180).
Advertisement

BDD com Behat

by

Portuguese (Português) translation by Erick Patrick (you can also view the original English article)

framework PHP para BDD Behat permite que você teste suas aplicações PHP usando sentenças entedíveis por humanos para descrever os recursos e cenários sobre como suas aplicações deveria comportar-se, de modo que permita testar suas funcionalidades. Depois disso, podemos executar esses testes para ver se nossa aplicação se comporta como esperado. Passemos 15 minutos pelo processo de instalação do Behat e aprendamos como podemos testar o comportamento de nossas aplicações PHP usando o básico doframework.

Instalação

Para iniciarmos a testar nossas aplicações usando Behat, nós precisamos, primeiro, isntalá-lo localmente, em nossa máquina de desenvolvimento. Usarei o Composer, mas você pode dar uma olhada na documentação para outras maneiras.

Na sua aplicação (eu tenho uma app PHP em branco, chamadaphpbehat, que criei de antemão) crie um arquivo composer.json com o código a seguir para poder carregar o Behat:

Para finalizar a instalação, vá ao terminal e digite o seguinte comando:

Agora, deveremos ser capazes de rodar o comando bin/behat para trabalhar com a framework.

Criando Recursos

Nós sempre começamos criando um novo recurso. Um recurso é algo que podemos usar para descrever uma característica denossa aplicação para, então, implementá-la e fazer o teste passar.

Um recurso, de forma bem simples, consiste de:

  • Texto legível e entendível por humanos;
  • Usa a extensão .feature;
  • Contém o benefício, papel e o próprio recurso;
  • Pode conter uma lista de cenários.

É válido lembrar que não serei capaz de mostrar como testar todas as características de uma aplicação, uma vez que isso levaria muito tempo e tornaria o artigo gigantesco. Porém, o que posso fazer é mostrar a você como criar um recurso básico para, depois, você adaptá-lo de forma que ele funcione para a sua própria aplicação.

Testando a Classe Phpadder

Para não complicar o processo de aprendizado, criemos um simples arquivo Phpadder.php que conterá uma classe com alguns métodos que você poderá usar para somar dois números e mostrar o resultado.

Esse código é o responsável pela criação da classe Phpadder. Nós temos algumas propriedades para guardar o primeiro ($a) e segundo ($b) números a serem adicionados, bem como a propriedade $sumpara guardar o resultado da soma.

Logo depois, nós temos o método construtor que inicializa nossas propriedades. Temos ainda um método add para somar os dois números. Finalmente, temos o método display para mostrar a soma dos dois números.

Recurso do Adder

Agora, vamos testar a classe Phpadder. Crie um novo arquivophpadder.feature e coloque o seguinte código:

Nós começamos dando o nome de adder ao nosso recurso. Depois, especificamos, em três linhas, o benefício, o papel e o recurso em si. Tudo deveria ser bem auto explicativo.

Agora que temos nosso recurso, comecemos a escrever nossos cenários.

Criando Cenários

Toda vez que criamos um recurso, podemos definir cenários que descrever como aquele recurso se comporta em determinadas condições. Os cenários seguem o mesmo layout básico do recurso, com um descrição, contexto, evento e resultado.

Vamos criar o cenário para testar nossa aplicação Phpadder:

Nós começamos com a descrição do nosso cenários, depois listamos que devemos começar com dois números, 50 e 25, e que, quando somados, eles devem totalizar 75.

Você também pode ter vários contextos, eventos e retorno, bem como usar as seguintes palavras-chave: And e But (por isso o cenário e o recurso estão, em sua maior parte, em inglês, ainda). Aqui está uma versão modificado do cenário anterior, onde usamos a palavra-chaveAnd:

Criando Definições de Etapas

Um "passo", nada mais é que uma função PHP que é feita de a partir de uma palavra-chave, uma expressãor egular e um função callback. Cada sentença em seu cenário equivalerá a um passo. Esses passos definem o que deveria acontecer quando uma de suas sentenças forem chamadas dentro do cenário. Você guarda todos os seus passos dentro de um arquivo features/bootstrap/FeatureContext.php.

O Passo "Given"

Em nosso arquivo FeatureContext.php (você talvez precise criá-lo), nós precisamos escrever um passo para cada uma de nossas sentenças, usando seu nome como o nome da função. Nós começaremos com a sentença Given I have the number:

Primeiro, nós criamos nosso novo arquivo PHP, fazemos a requisição do arquivo Phpadder.php (o arquivo que estamos testando), e, então, nós importamos algumas classes do Behat, a partir do uso das sentençasuse.

Depois, criamos nossa classe FeatureContext e a fazemos estender a classe BehatContext.

Nossa classe tem somente uma propriedade, $Adder, que guardará o objeto Phpadder.

Por fim, nós criamos nosso método para nosso primeiro passo, usando o mesmo nome do passo como nome do método. Nosso passo tem uma expressão regular, que fica nos comentários do método. Essa expressão regular é usada para comparar o passo atual com sentença do cenário correta. Dentro do método, nós só atribuímos o novo objeto Phpadder à nossa propriedade $this->Adder para que todos os outros métodos tenham acesso ao mesmo objeto Phpadder.

Você provavelmente percebey a palavra-chave @Given dentro dos comentários da função. Isso, na verdade, é uma anotação que permite que os diferentes tipos de passos sejam identificados. Você pode usar @Given@When e @Then.

Agora, só precisamos escrever os outros dois passos.

O Passo "When"

Esse passo, simplesmente, usa o método add do nosso objeto$this->Adder para somar dois números.

O Passo "Then"

Esse passo começa verificando se o valor atual da soma (obetido usando a propriedade $sum do nosso objeto $this->Addernão é igual ao valor esperado da soma. Se essa condição for verdadeira, significa que precisamos mandar o Behat mostrar um erro. Para fazer isso, simplesmente lançamos uma nova exceção, juntamente da mensagem que mostra o valor atual da soma que queremos comparar. Por outro lado, se for falso, nós podemos chamar o método display.

Hora de executar os testes.

Executando os testes

Agora que temos nossos recursos, cenários e passos, todos criados, podemos executar os testes usando o seguinte comando:

Você deveria obter as seguintes telas de mensagem de sucesso em seu terminal:

Tela de execuo dos testes no terminal

Você pode garantir que seus testes estão rodando corretamente, simplesmente, mudando alguma coisa no seu arquivo Phpadder.phppara que ele não rode da forma que esperamos que ele execute. Por exemplo, se mudarmos o método add para usar a subtração ao invés da adição, desse jeito (linha 3):

E, então, re-executar nossos testes com bin/behat, você verá que, no terminal, nós teremos testes falhos, porque não temos mais um método que adiciona números, mas, sim, que os subtrai:

Tela execuo dos testes no terminal falhando

Conclusão

Resumidamente, você pode seguir o seguinte processo para testar suas apps PHP usando Behat:

  1. Defina um Recurso
  2. Defina um Cenário
  3. Defina os Passos
  4. Execute os testes usando bin/behat

Assim, com essa pouca quantidade de código, nós devemos ter um conhecimento básico sobre como trabalhar com o Behatpara testar nossas aplicações PHP. Para maiores informações sobre como usar o Behat, por favor, veja a documentação

Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!

Advertisement