راهنمای مهاجرت به Vitest ۵
خلاصهٔ کاملتر
نسخهٔ ۵ Vitest منتشر شده و قبل از هر چیز پیشنیازهاش عوض شده: باید Vite حداقل ۶.۴.۰ و Node.js حداقل ۲۲.۱۲.۰ داشته باشین، وگرنه اجراش پشتیبانی نمیشه و ممکنه با خطاهای عجیب روبرو بشین.
بزرگترین تغییر رفتاری اینه که clearMocks (یعنی گزینهای که تاریخچهٔ فراخوانی mock ها رو پاک میکنه ولی خودِ پیادهسازیشون رو دست نمیزنه) از این به بعد بهصورت پیشفرض trueـه. یعنی هر mock قبل از شروع هر تست ریست میشه و دیگه تعداد فراخوانیهاش رو از تست قبلی با خودش نمیبره:
test('second', () => {
fn()
// v5: تاریخچه قبل از هر تست پاک میشه
expect(fn).toHaveBeenCalledTimes(1)
})اگه تو یه پروژه mock هایی هستن که بیرون از تنِ تست (مثلا تو فایل setup یا beforeAll) صدا زده میشن و روی تاریخچهشون حساب باز کردین، این تغییر میتونه تستهاتون رو بشکنه؛ برای برگردوندن رفتار قبلی کافیه clearMocks: false رو تو کانفیگ ست کنین.
یه تغییر دیگه اینه که فراخوانی vi.mock، vi.unmock و vi.hoisted باید حتما تو سطح بالای فایل باشن؛ قبلا اگه این توابع تو دل یه تابع یا describe صدا زده میشدن فقط یه اخطار میداد، ولی حالا مستقیم خطا میده چون این فراخوانیها همیشه قبل از بقیهٔ کد hoist و اجرا میشن.
چند تغییر دیگه هم تو تنظیمات پروژههای چندگانه اومده: testNamePattern (پرچم -t) حالا اسم کامل تست رو با جداکنندهٔ ' > ' مچ میکنه، نه یه فاصلهٔ ساده؛ پروژههای inline تو test.projects بهصورت پیشفرض تنظیمات ریشه (مثل پلاگینها) رو ارث میبرن؛ و اگه یه کانفیگ جدا خودش هم projects تعریف کرده باشه، دیگه نادیده گرفته نمیشه و بهعنوان پروژههای تودرتو اجرا میشه.
نکات کلیدی:
- نیازمندی جدید: Vite ۶.۴.۰ به بالا و Node.js ۲۲.۱۲.۰ به بالا
- clearMocks پیشفرض شده روی true، تاریخچهٔ mock قبل از هر تست پاک میشه
- vi.mock/vi.unmock/vi.hoisted بیرون از سطح بالای فایل حالا خطا میده، نه فقط اخطار
- testNamePattern با ' > ' مچ میشه نه فاصله
- پروژههای inline از این به بعد بهصورت پیشفرض تنظیمات و پلاگینهای کانفیگ ریشه رو ارث میبرن




