Mocha unterstützt mehrere Test-Interfaces. Während bdd auf describe() und it() setzt, nutzt das tdd-Interface klassische xUnit-Konventionen mit suite() und test().
TDD-Interface einrichten
const { expect } = require('chai');
// Mocha für das TDD-Interface konfigurieren
mocha.setup('tdd');
suite('Payment Processing', () => {
suiteSetup(() => {
// Läuft einmalig vor allen Tests dieser Suite
});
suiteTeardown(() => {
// Läuft einmalig nach allen Tests dieser Suite
});
setup(() => {
// Läuft vor jedem einzelnen Test
});
teardown(() => {
// Läuft nach jedem einzelnen Test
});
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');
});
});
Vergleich: BDD vs. TDD
| Konzept | BDD-Interface (bdd) |
TDD-Interface (tdd) |
|---|---|---|
| Testgruppe | describe("name", () => {}) |
suite("name", () => {}) |
| Einzeltest | it("does something", () => {}) |
test("does something", () => {}) |
| Before-All-Hook | before(() => {}) |
suiteSetup(() => {}) |
| After-All-Hook | after(() => {}) |
suiteTeardown(() => {}) |
| Before-Each-Hook | beforeEach(() => {}) |
setup(() => {}) |
| After-Each-Hook | afterEach(() => {}) |
teardown(() => {}) |
TDD-Tests über die CLI ausführen
Standardmäßig nutzt die Mocha-CLI das BDD-Interface. Für TDD-Testsuites übergeben Sie --ui tdd:
mocha --ui tdd test/tdd/*.test.js