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 vs TDD
| 概念 | BDD インターフェース (bdd) |
TDD インターフェース (tdd) |
|---|---|---|
| テストグループ | describe("name", () => {}) |
suite("name", () => {}) |
| 個別テスト | it("does something", () => {}) |
test("does something", () => {}) |
| 全体の事前フック | before(() => {}) |
suiteSetup(() => {}) |
| 全体の事後フック | after(() => {}) |
suiteTeardown(() => {}) |
| 各テストの事前フック | beforeEach(() => {}) |
setup(() => {}) |
| 各テストの事後フック | afterEach(() => {}) |
teardown(() => {}) |
CLI から TDD テストを実行する
Mocha CLI のデフォルトは BDD インターフェースです。TDD テストスイートを実行するには --ui tdd を指定します:
mocha --ui tdd test/tdd/*.test.js