Organizando Testes
Existem diversas motivações para organizar os testes de forma mais eficiente:
- Testes diferentes geralmente têm seus próprios arquivos.
- Uso de escopos isolados para declarar as mesmas variáveis ou isolamento de um teste do outro no mesmo arquivo.
- Agrupamento de múltiplos testes do mesmo método.
Vamos criar dois métodos básicos (soma e sub) para serem testados:
- ./src/calc.mjs
export const soma = (a, b) => a + b;
export const sub = (a, b) => a - b;
Separando testes com responsabilidades diferentes
Crie um arquivo para testar o método
somae outro para o métodosub.
- ./test/unit/soma.test.mjs
- ./test/unit/sub.test.mjs
import { test, assert } from 'poku';
import { soma } from '../../src/calc.mjs';
test('Testando o método "soma"', () => {
assert(soma(0, 0), 0, 'deve retornar zero');
assert(soma(0, 1), 1, 'deve retornar um');
assert(soma(1, 1), 2, 'deve retornar dois');
});
import { test, assert } from 'poku';
import { sub } from '../../src/calc.mjs';
test('Testando o método "sub"', () => {
assert(sub(1, 1), 0, 'deve retornar zero');
assert(sub(2, 1), 1, 'deve retornar um');
assert(sub(3, 1), 2, 'deve retornar dois');
});
Categorizando testes com responsabilidades diferentes
Crie um arquivo único para testar tanto o método
somaquanto osub.
- ./test/unit/calc.test.mjs
import { test, assert } from 'poku';
import { soma, sub } from '../../src/calc.mjs';
test('Testando o método "soma"', () => {
assert(soma(0, 0), 0, 'deve retornar zero');
assert(soma(0, 1), 1, 'deve retornar um');
assert(soma(1, 1), 2, 'deve retornar dois');
});
test('Testando o método "sub"', () => {
assert(sub(1, 1), 0, 'deve retornar zero');
assert(sub(2, 1), 1, 'deve retornar um');
assert(sub(3, 1), 2, 'deve retornar dois');
});
Descrevendo testes com responsabilidades diferentes
Crie um arquivo único para testar tanto o método
somaquanto osub.
- ./test/unit/calc.test.mjs
import { describe, it, assert } from 'poku';
import { soma, sub } from '../../src/calc.mjs';
describe('Testando métodos de cálculo', () => {
it('Método "soma"', () => {
assert(soma(0, 0), 0, 'deve retornar zero');
assert(soma(0, 1), 1, 'deve retornar um');
assert(soma(1, 1), 2, 'deve retornar dois');
});
it('Método "sub"', () => {
assert(sub(1, 1), 0, 'deve retornar zero');
assert(sub(2, 1), 1, 'deve retornar um');
assert(sub(3, 1), 2, 'deve retornar dois');
});
});
- Ao usar
describe+itcom mensagens, é comum não incluir a mensagem noassert.
dica
Você pode escolher usar describe + it, ou test + describe, ou test + it e assim por diante, mas observe que, se você usar mensagens, elas só serão formatadas corretamente para:
asserttesttest+assertitit+assertdescribedescribe+assertdescribe+itdescribe+it+assertdescribe+assert+it+assertdescribe+testdescribe+test+assertdescribe+assert+test+assert
Cuidado
Evite combinar test e it ao usar hooks como beforeEach (por exemplo, test + test, it + it, test + it, etc.).
observação
Se você encontrar algum erro de digitação, sinta-se à vontade para abrir um Pull Request corrigindo-o.