Mocha поддерживает несколько интерфейсов написания тестов. Если bdd использует describe() и it(), то интерфейс tdd следует классическим соглашениям xUnit с suite() и test().
Настройка TDD-интерфейса
const { expect } = require('chai');
// Настройка Mocha на использование TDD-интерфейса
mocha.setup('tdd');
suite('Payment Processing', () => {
suiteSetup(() => {
// Выполняется один раз перед всеми тестами в наборе
});
suiteTeardown(() => {
// Выполняется один раз после всех тестов в наборе
});
setup(() => {
// Выполняется перед каждым тестом
});
teardown(() => {
// Выполняется после каждого теста
});
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');
});
});
Сравнение: BDD и TDD
| Понятие | Интерфейс BDD (bdd) |
Интерфейс TDD (tdd) |
|---|---|---|
| Группа тестов | describe("name", () => {}) |
suite("name", () => {}) |
| Отдельный тест | it("does something", () => {}) |
test("does something", () => {}) |
| Хук до всех тестов | before(() => {}) |
suiteSetup(() => {}) |
| Хук после всех тестов | after(() => {}) |
suiteTeardown(() => {}) |
| Хук перед каждым тестом | beforeEach(() => {}) |
setup(() => {}) |
| Хук после каждого теста | afterEach(() => {}) |
teardown(() => {}) |
Запуск TDD-тестов через CLI
По умолчанию CLI Mocha использует BDD-интерфейс. Чтобы запускать TDD-наборы, передайте --ui tdd:
mocha --ui tdd test/tdd/*.test.js