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
soma
e 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
soma
quanto 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
soma
quanto 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
+it
com 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:
assert
test
test
+assert
it
it
+assert
describe
describe
+assert
describe
+it
describe
+it
+assert
describe
+assert
+it
+assert
describe
+test
describe
+test
+assert
describe
+assert
+test
+assert
Cuidado
Evite combinar test
e it
ao usar hooks como beforeEach
(por exemplo, test + test
, it + it
, test + it
, etc.).
nota
Se você encontrar algum erro de digitação, sinta-se à vontade para abrir um Pull Request corrigindo-o.