クイックリファレンス

Mocha.js TDD インターフェース チートシート

Mocha.js の TDD インターフェース(suite、test、setup/teardown フック、非同期テスト、Chai expect アサーション)のクイックリファレンス。

· 公開日

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

参考リンク

関連テーマ