Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Testes Elegantes com Pest

Igor Duarte
December 04, 2020

Testes Elegantes com Pest

Evento: PHP Conference Brasil 2020
Pest é um novo framework de testes PHP, possuindo uma estrutura focada em simplicidade que vem ganhando espaço ultimamente.
Nessa apresentação vamos conhecer um pouco desse novo framework e como iniciar sua utilização.

Igor Duarte

December 04, 2020
Tweet

More Decks by Igor Duarte

Other Decks in Technology

Transcript

  1. • ADS - Unisinos • Desenvolvedor Full Stack • Desenvolvedor

    há 7 anos • Coordenador da Comunidade • Palestrante e Escritor • Criador de ElePHPants • Gamer nas horas vagas ;) Igor Santos
  2. • Motivação • Caso de Uso • História • Pest

    Framework • Code Coverage • Laravel e Pest • Então... Roteiro
  3. Motivação Pest é um novo framework de testes PHP, possuindo

    uma estrutura focada em simplicidade que vem ganhando espaço ultimamente. Por isso a ideia dessa apresentação é mostrar um pouco desse novo framework e como iniciar sua utilização.
  4. História • V. 0.1.0 - 09 de Maio de 2020

    • V. 0.3.14 - 28 de Novembro de 2020 • Baseado no PHPUnit • Simples • Sintaxe inspirada no Jest • Suporte ao PHP 8 @enunomaduro
  5. Instalação composer require pestphp/pest --dev #Requirements • PHP 7.3+ •

    phpunit/phpunit 9.3.10 • nunomaduro/collision 5 • phpunit.xml
  6. Escrevendo Testes • Testes Unit e Feature ◦ Unit =>

    Testes de unidade específicos ◦ Feature => Testes de integração ou mais complexos • Todo teste deve terminar com o sufixo Test.php • É possível referenciar a API de teste de duas maneiras diferentes: ◦ test() ◦ it()
  7. Comandos vendor/bin/pest vendor/bin/pest --stop-on-failure Para rodar os teste Para rodar

    os testes e parar em caso de falha Para rodar uma classe de teste especifica vendor/bin/pest --filter ExampleTest
  8. Assertions Lembrando que os métodos de assertions devem ser pré

    sucedidos do $this assertTrue() // Declara que o valor é verdadeiro assertFalse() // Declara que o valor é falso assertCount() // Declara que o iterável fornecido contém o mesmo número de itens assertEquals() // Declara que os valores fornecidos são iguais assertEmpty() //Declara que o iterável fornecido está vazio assertStringContainsString() //Declara que a string fornecida existe
  9. Expectations O Pest oferece um conjunto de expectativas, que permitem

    testar valores em certas condições. expect($value)-> //Expectativa expect($value)->toBe($value); //Afirma que a variavel tem o mesmo tipo e valor expect($value)->toBeEmpty(); //Afirma que o valor está vazio expect($value)->toBeTrue(); //Afirma que o valor é verdadeiro expect($value)->toBeFalse(); //Afirma que o valor é falso . . . +40 expectations https://pestphp.com/docs/expectations#available-expectations
  10. Exceptions Às vezes também é necessário testar o comportamento quando

    se trabalha com exceções. throws() //Para testar uma exceção Também é possível testar declarando a mensagem da exceção, basta passar como segundo argumento.
  11. Skip & Only Através do método skip() é possível desativar

    temporariamente um teste. Também é possível executar um único teste através do método only(), ideal para depurar um teste em desenvolvimento ou com problemas.
  12. Testes de Ordem Superior O pest fornece os chamados de

    testes de ordem superior, que são nada mais “atalhos” ou uma abreviação para escrever ações comuns aos testes.
  13. Helpers É possível criar métodos globais para auxiliar no desenvolvimento

    dos testes, por padrão o pest carrega o arquivo tests/Helpers.php.
  14. Datasets São conjuntos de dados no Pest que permitem que

    você execute o mesmo teste várias vezes com dados diferentes.
  15. Outras Funcionalidades Testes Subjacentes //É possível vincular uma classe externa

    a suas classes de testes. https://pestphp.com/docs/underlying-test-case Grupos de Testes //É possível atribuir testes a grupos diferentes. Por exemplo, pode criar um grupo para testes de integração. https://pestphp.com/docs/groups
  16. Apesar do Pest ser agnóstico de framework e conseguir ser

    utilizado em qualquer tipo de aplicação, ele foi projetado com o laravel em mente e isso nos traz alguns benefícios. Laravel e Pest
  17. Cria o arquivo Pest.php em sua pasta de testes é

    o arquivo onde o uses são declarados Cria uma nova classe de teste em Tests/Feature Cria uma nova classe de teste em Test/Unit Cria uma noca classe de dados em Tests/Dataset php artisan pest:test UsersTest php artisan pest:test UsersTest --unit php artisan pest:install php artisan pest:dataset Users Laravel e Pest
  18. Então... O framework fornece outras diversas funcionalidades, mas por conta

    do tempo e pela proposta desta apresentação ser abordar o funcionamento inicial e básico do framework, ficamos por aqui!