Promesas
O uso da sintaxe nativa JavaScript nos testes é uma das principais diferenças entre o Poku e outros executores de testes, o que possibilita seu uso em várias plataformas.
dica
Não é necessário usar await
para testes que não são assíncronos.
Aqui estão alguns exemplos de testes sequenciais e concorrentes no mesmo arquivo, além de como realizar uma ação após todos os testes terem sido concluídos:
Executando testes assíncronos no mesmo arquivo em paralelo
import { test, assert, sleep } from 'poku';
test(async () => {
const atual = 1;
const esperado = 1;
await sleep(2000);
assert.strictEqual(atual, esperado);
});
test(async () => {
const atual = 2;
const esperado = 2;
await sleep(1000);
assert.strictEqual(atual, esperado);
});
Executando testes assíncronos no mesmo arquivo sequencialmente (aguardando nível superior)
import { test, assert, sleep } from 'poku';
await test(async () => {
const atual = 1;
const esperado = 1;
await sleep(2000);
assert.strictEqual(atual, esperado);
});
await test(async () => {
const atual = 2;
const esperado = 2;
await sleep(1000);
assert.strictEqual(atual, esperado);
});
Executando testes assíncronos no mesmo arquivo sequencialmente
import { describe, it, assert, sleep } from 'poku';
describe(async () => {
await it(async () => {
const atual = 1;
const esperado = 1;
await sleep(2000);
assert.strictEqual(atual, esperado);
});
await it(async () => {
const atual = 2;
const esperado = 2;
await sleep(1000);
assert.strictEqual(atual, esperado);
});
});
Aguarando todos os testes serem executados para realizar uma ação posterior
import { describe, it, assert, sleep } from 'poku';
describe(async () => {
console.log('Imprimindo isso antes de todos os testes 🏃🏻♀️');
await Promise.all([
test(async () => {
const atual = 1;
const esperado = 1;
await sleep(2000);
assert.strictEqual(atual, esperado);
}),
test(async () => {
const atual = 2;
const esperado = 2;
await sleep(1000);
assert.strictEqual(atual, esperado);
}),
]);
console.log('Imprimindo isso depois de todos os testes 😴');
});
dica
Para múltiplos describe
ou test
assíncronos, você também pode usar await
para executá-los sequencialmente.
Be careful
Ao usar beforeEach
and afterEach
assíncronos, é necessário usar await
mesmo que os auxiliares test
ou it
não tenham eventos assíncronos.
nota
Se você encontrar algum erro de digitação, sinta-se à vontade para abrir um Pull Request corrigindo-o.