Skip to content

في كثير من الحالات، يمكن لمُشغل اختبارات Bun تشغيل مجموعات اختبارات Jest دون أي تغييرات في الكود. فقط شغّل bun test بدلاً من npx jest أو yarn test إلخ.

sh
npx jest
yarn test
bun test

غالبًا لا حاجة لتغييرات في الكود.

  • يعيد Bun داخليًا كتابة الواردات من @jest/globals لاستخدام مكافئات bun:test.
  • إذا كنت تعتمد على Jest لحقن test أو expect إلخ كعوامل عامة، فإن Bun يفعل ذلك أيضًا.

ولكن إذا كنت تفضل التبديل إلى واردات bun:test، فيمكنك فعل ذلك أيضًا.

test.ts
ts
import { test, expect } from "@jest/globals"; 
import { test, expect } from "bun:test"; 

منذ Bun v1.2.19، يمكنك تمكين دعم TypeScript لدوال الاختبار العامة باستخدام توجيه ثلاثي الشفرات واحد. هذا يجعل الترحيل من Jest أسهل بكثير حيث تحتاج فقط إلى إضافة التوجيه مرة واحدة في مشروعك بأكمله:

أضف هذا التوجيه إلى ملف واحد فقط في مشروعك، مثل:

  • ملف global.d.ts في جذر مشروعك
  • ملف إعداد preload.ts للاختبار الخاص بك (إذا كنت تستخدم preload في bunfig.toml)
  • أي ملف .ts واحد يتضمنه TypeScript في تجميعك
global.d.ts
ts
/// <reference types="bun-types/test-globals" />

بمجرد إضافته، ستحصل جميع ملفات الاختبار في مشروعك تلقائيًا على دعم TypeScript لعوامل Jest العامة:

ts
describe("my test suite", () => {
  test("should work", () => {
    expect(1 + 1).toBe(2);
  });

  beforeAll(() => {
    // كود الإعداد
  });

  afterEach(() => {
    // كود التنظيف
  });
});

يُطبق Bun الغالبية العظمى من مطابقات Jest، لكن التوافق ليس 100% بعد. راجع جدول التوافق الكامل في الوثائق > مُشغل الاختبارات > كتابة الاختبارات.

بعض الميزات الغائبة البارزة:

  • expect().toHaveReturned()

إذا كنت تستخدم testEnvironment: "jsdom" لتشغيل اختباراتك في بيئة شبيهة بالمتصفح، فيجب عليك اتباع دليل اختبار DOM مع Bun و happy-dom لحقن واجهات برمجة تطبيقات المتصفح في النطاق العام. يعتمد هذا الدليل على happy-dom، وهو بديل أنحف وأسرع من jsdom.

في الوقت الحالي لا يعمل jsdom في Bun بسبب استخدامه الداخلي لواجهات برمجة تطبيقات V8. تابع دعمه هنا.

toml
[test]
preload = ["./happy-dom.ts"]

استبدل bail في تكوين Jest الخاص بك بعلم CLI --bail.

sh
bun test --bail=3

استبدل collectCoverage بعلم CLI --coverage.

sh
bun test --coverage

استبدل testTimeout بعلم CLI --test-timeout.

sh
bun test --timeout 10000

تصبح العديد من العلامات الأخرى غير ذات صلة أو قديمة عند استخدام bun test.

  • transform — يدعم Bun TypeScript و JSX. يمكن تكوين أنواع الملفات الأخرى باستخدام الإضافات.
  • extensionsToTreatAsEsm
  • haste — يستخدم Bun خرائط المصدر الداخلية الخاصة به
  • watchman، watchPlugins، watchPathIgnorePatterns — استخدم --watch لتشغيل الاختبارات في وضع المراقبة
  • verbose — عيّن logLevel: "debug" في bunfig.toml

الإعدادات التي لم يتم ذكرها هنا غير مدعومة أو ليس لها مكافئ. يرجى تقديم طلب ميزة إذا كان هناك شيء مهم مفقود.


راجع أيضًا:

Bun بواسطة www.bunjs.com.cn تحرير