يوفر 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
تستخدم أداة سطر أوامر Mocha واجهة BDD افتراضياً. لتشغيل مجموعات TDD، مرّر --ui tdd:
mocha --ui tdd test/tdd/*.test.js