DevOps ‐ Integration Testing - iNineBD/Track-5Sem2025Main GitHub Wiki
📦 Testes de Integração - Pacote Service (Nuxt 3)
Este documento descreve as diretrizes para a implementação de testes de integração no pacote service
, incluindo responsabilidades, boas práticas, ferramentas recomendadas e exemplos práticos, com foco em aplicações Nuxt 3.
👥 Responsabilidades e Boas Práticas
✅ Quem deve implementar
Desenvolvedores responsáveis pelas funcionalidades que envolvem regras de negócio devem também implementar os testes de integração relacionados, sempre que houver pontos de integração relevantes (ex: APIs, banco de dados, serviços externos).
⚠️ Observação: O próprio desenvolvedor deve garantir que as integrações estejam cobertas por testes.
⏱️ Quando implementar
🖼️ Front-End
Recomenda-se escrever testes de integração nos seguintes cenários:
- Fluxos críticos de navegação ou uso (ex: login, checkout, envio de formulário). com comunicação com APIs (
$fetch
,useFetch
,useAsyncData
, etc).
🔧 Back-End (Server Side Nuxt)
Recomenda-se escrever testes de integração nos seguintes cenários:
- A funcionalidade envolve múltiplas camadas: endpoint → service → database.
- Fluxos dependem de regras complexas de negócio.
🛠️ Como implementar
🖥️ Front-End (Nuxt 3)
Ferramentas:
- Vue Test Utils + Vitest (integração oficial via Nuxt)
- @nuxt/test-utils – utilitário oficial para testar páginas, componentes e APIs locais.
- Cypress – testes E2E (end-to-end)
Boas práticas:
- Use
setupTest()
do Nuxt para configurar o ambiente antes dos testes. - Use
render()
do Vue Test Utils para montar páginas/componentes. - Prefira
msw
para mockar chamadas HTTP. - Valide efeitos visíveis e mudanças no estado global (
useState
,useAuth
, etc).
Como fazer:
- Estrutura:
import { setup, createPage } from '@nuxt/test-utils/e2e'
import { describe, it, expect } from 'vitest'
describe('login page', async () => {
await setup({
host: 'http://localhost:8787',
})
it('displays the email and password fields', async () => {
const page = await createPage('/login')
expect(await page.getByTestId('email').isVisible()).toBe(true)
expect(await page.getByTestId('password').isVisible()).toBe(true)
})
})
💻 Back-End (Golang)
Ferramentas:
Boas práticas:
- Teste suas rotas utilizando testing e testify.
- Crie arquivos _test.go separados por camada (ex: service_test.go, handler_test.go).
Como fazer:
- Conexão com o banco:
func init() {
database.ConnectDB()
}
- Estrutura:
func TestNomeDoTeste(t *testing.T) {
IDProject := int64(123)
data1 := "2024-01-01"
data2 := "2024-12-31"
idUser := int64(456)
idRole := int64(789)
status, response := NomeDaFuncao(IDProject, data1, data2, idUser, idRole)
assert.Equal(t, http.StatusOK, status)
assert.NotNil(t, response["success"])
}
Certifique-se que a função ConnectDB esteja definida em pkg/database/db.go e conecte corretamente ao banco PostgreSQL que possui os dados reais.
🧪 Rodando os Testes
Para executar todos os testes (unitários, integração e API):
Nuxt (front-end)
npm run test
Golang (back-end)
go test ./... -v