Os testes unitários desempenham um papel crucial no desenvolvimento de software, garantindo que cada parte do código funcione conforme o esperado. Em projetos Laravel, onde a utilização de filas é comum para processamento em segundo plano, é essencial garantir que essas filas sejam testadas de forma adequada.
Vamos implementar testes na fila de sincronização de dados do projeto product-api.
Após a instalação, o script ./init.sh será chamado para:
Instalar o MySQL
Criar o banco usado pela API.
Criar no banco o usuário utilizado pela API.
Rodar as migrações.
Gerar o swaager.json
Rodar os testes.
Startar a aplicação.
About Laravel
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
No meu caso, optei por criar os testes após a implementação da fila. Contudo, vale destacar que a abordagem inversa, onde os testes são criados antes da implementação, também é válida e pode ser adotada conforme a preferência em seu projeto.
Crie um novo teste com o comando artisan make:test. Para fins de organização, criarei meus testes dentro da pasta Plataform1, pois meu job faz sinc de produtos com esse módulo.
phpartisanmake:testPlataform1/ProductSyncTest
O primeiro método que vamos criar, será responsável por testar o despache do nosso job para a fila. Não estranhe o tamanho do nome do método, pois prefiro que seja descritivo e claro em relação à sua funcionalidade.
Vamos usar umaQueue fake para testar os despaches e vamos despachar os jobs.
Você pode ajustar o teste de acordo com a necessidade do seu projeto, Laravel é um framework altamente testável e rico em recursos de teste.
Agora, vamos criar um teste chamado test_product_sync para o serviço ProductSync que injetamos em ProductSyncJob. Conhecer a implementação de ProductSync é fundamental para o entendimento do próximo teste. Você pode verificar sua implementação no artigo ou repositório mencionado anteriormente.
Vamos pegar a url que recebe as requisições e criar dois arrays de produtos.
Dentro de nossa classe de teste, use a trait RefreshDatabase.
useRefreshDatabase;
Finalmente, vamos rodar nossos testes.
phpartisantest// opcionalmente, você pode passar o caminho do arquivo que deseja testarphpartisantestpath/to/file
Neste artigo, exploramos a importância dos testes em filas de projetos Laravel, destacando como eles fortalecem a confiabilidade das aplicações. Ao adotar práticas de teste eficazes, garantimos que a execução assíncrona e a gestão de filas sejam mais consistentes. A integração de testes sólidos contribui para a construção de sistemas mais resilientes em ambientes de produção.