Mocha ofrece múltiples interfaces de prueba. Mientras bdd utiliza describe() e it(), la interfaz tdd sigue las convenciones clásicas estilo xUnit con suite() y test().
Configuración de la interfaz TDD
const { expect } = require('chai');
// Configurar Mocha para usar la interfaz TDD
mocha.setup('tdd');
suite('Payment Processing', () => {
suiteSetup(() => {
// Se ejecuta una vez antes de todas las pruebas de esta suite
});
suiteTeardown(() => {
// Se ejecuta una vez después de todas las pruebas de esta suite
});
setup(() => {
// Se ejecuta antes de cada prueba
});
teardown(() => {
// Se ejecuta después de cada prueba
});
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');
});
});
Comparación: BDD frente a TDD
| Concepto | Interfaz BDD (bdd) |
Interfaz TDD (tdd) |
|---|---|---|
| Grupo de pruebas | describe("name", () => {}) |
suite("name", () => {}) |
| Prueba individual | it("does something", () => {}) |
test("does something", () => {}) |
| Hook previo al bloque | before(() => {}) |
suiteSetup(() => {}) |
| Hook posterior al bloque | after(() => {}) |
suiteTeardown(() => {}) |
| Hook previo por prueba | beforeEach(() => {}) |
setup(() => {}) |
| Hook posterior por prueba | afterEach(() => {}) |
teardown(() => {}) |
Ejecutar pruebas TDD desde CLI
Por defecto, el CLI de Mocha utiliza la interfaz BDD. Para ejecutar suites TDD, pasa --ui tdd:
mocha --ui tdd test/tdd/*.test.js