Pular para o conteúdo principal
Versão: v3.x.x

Um Caso Complexo

Imagine esses passos para realizar um teste:

  1. Execute a suíte de Testes Unitários em paralelo
  2. Limpe e popule o banco de dados
  3. Verifique a suíte de Integração de Sucessos Esperados sequencialmente
  4. Limpe e popule o banco de dados — novamente
  5. Verifique a suíte de Integração de Falhas Esperadas sequencialmente

Requisitos:

Cada passo requer sucesso para ser processado.

Estrutura de Diretórios:

├── .
├── test
│ ├── unit
│ ├── integration
│ │ ├── successes
│ │ │ └── **/.spec.js
│ │ └── failures
│ │ └── **/.spec.js
│ ├─ run.test.js # O executor
│ ├─ tools.test.js

Nós realmente precisamos complicar ainda mais as coisas criando executores de testes avançados para rodar nossos testes já complexos? 😅

Solução do Poku ✨

import { poku, assert } from 'poku';
import { recreateDatabase } from './tools.test.js';

const unitCode = await poku('test/unit', {
noExit: true,
});

assert.strictEqual(0, unitCode, 'Executando Testes Unitários');

await assert.doesNotReject(
recreateDatabase(),
'Preparando o banco de dados para os Testes de Integração de Sucessos'
);

const successesCode = await poku('test/integration/successes', {
noExit: true,
});

assert.strictEqual(
0,
successesCode,
'Executando Testes de Integração de Sucessos'
);

await assert.doesNotReject(
recreateDatabase(),
'Preparando o banco de dados para os Testes de Integração de Sucessos'
);

const failuresCode = await poku('test/integration/failures', {
noExit: true,
});

assert.strictEqual(
0,
failuresCode,
'Executando Testes de Integração de Falhas'
);

Por quê comentar o código se podemos fazer melhor? 🧙🏻

Finalmente

npx poku test/run.test.js

Ou npx poku test/run.test.ts para TypeScript.