O Mocha oferece várias interfaces de teste. Enquanto bdd utiliza describe() e it(), a interface tdd segue convenções clássicas no estilo xUnit com suite() e test().
Configuração da Interface TDD
const { expect } = require('chai');
// Configurar o Mocha para usar a interface TDD
mocha.setup('tdd');
suite('Payment Processing', () => {
suiteSetup(() => {
// Executa uma vez antes de todos os testes nesta suíte
});
suiteTeardown(() => {
// Executa uma vez depois de todos os testes nesta suíte
});
setup(() => {
// Executa antes de cada teste
});
teardown(() => {
// Executa depois de cada teste
});
test('validates card expiration date', () => {
const isValid = validateExpiry('12/28');
expect(isValid).to.be.true;
});
test('handles async network payments', async () => {
const receipt = await chargeCard(100);
expect(receipt.status).to.equal('success');
});
});
Comparação: BDD vs TDD
| Conceito | Interface BDD (bdd) |
Interface TDD (tdd) |
|---|---|---|
| Grupo de Testes | describe("name", () => {}) |
suite("name", () => {}) |
| Teste Individual | it("does something", () => {}) |
test("does something", () => {}) |
| Hook Antes de Todos | before(() => {}) |
suiteSetup(() => {}) |
| Hook Depois de Todos | after(() => {}) |
suiteTeardown(() => {}) |
| Hook Antes de Cada | beforeEach(() => {}) |
setup(() => {}) |
| Hook Depois de Cada | afterEach(() => {}) |
teardown(() => {}) |
Executando Testes TDD via CLI
Por padrão, a CLI do Mocha usa a interface BDD. Para executar suítes TDD, informe --ui tdd:
mocha --ui tdd test/tdd/*.test.js