Um Caso Complexo
Imagine esses passos para realizar um teste:
- Execute a suíte de Testes Unitários em paralelo
- Limpe e popule o banco de dados
- Verifique a suíte de Integração de Sucessos Esperados sequencialmente
- Limpe e popule o banco de dados — novamente
- 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', {
parallel: true,
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.