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:

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:

  • testing – pacote nativo de testes do Go.
  • testify – assertions e mocks.

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

📚 Referências