Skip to content
Vitest 3
Main Navigation Kılavuz & APIYapılandırmaTarayıcı ModuGelişmiş API
3.2.0
2.1.9
1.6.1
0.34.6

Türkçe

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
čeština
magyar

Türkçe

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
čeština
magyar

Görünüm

Sidebar Navigation

Giriş

Neden Vitest

Başlarken

Özellikler

Vitest'i Yapılandırma

API

Test API Referansları

Mock Fonksiyonlar

Vi

expect

expectTypeOf

assert

assertType

Kılavuz

Komut Satırı Arayüzü

Test Filtreleme

Test Projeleri

Raporlayıcılar

Kapsam

Anlık Görüntüler

Mocking

Paralellik

Tür Testleri

Vitest UI

Kaynak İçi Test

Test Ortamı

Test Açıklamaları

Test Ortamı

Eşleştiricileri Genişletme

IDE Entegrasyonları

Hata Ayıklama

Sık Karşılaşılan Hatalar

Geçiş Kılavuzu

Vitest 3.0'a Geçiş

Jest'ten Geçiş

Performans

Test Performansını Profillendirme

Performansı İyileştirme

Tarayıcı Modu

Gelişmiş API

Diğer Test Çalıştırıcılarla Karşılaştırmalar

Bu sayfada

Geçiş Kılavuzu ​

Vitest 3.0'a Geçiş ​

Test Seçeneklerinin Üçüncü Argüman Olarak Kullanımı ​

Vitest 3.0'da, test veya describe fonksiyonlarına üçüncü argüman olarak bir nesne geçirilmesi durumunda bir uyarı verilir:

ts
test('validation works', () => {
  // ...
}, { retry: 3 }); 

test('validation works', { retry: 3 }, () => { 
  // ...
});

Bir sonraki ana sürümde, üçüncü argüman bir nesne olduğunda bir hata fırlatılacaktır. Zaman aşımı süresinin hala geçerli bir üçüncü argüman olduğunu unutmayın:

ts
test('validation works', () => {
  // ...
}, 1000); // Ok ✅

browser.name ve browser.providerOptions Kullanımdan Kaldırıldı ​

Hem browser.name hem de browser.providerOptions Vitest 4'te kaldırılacaktır. Bunların yerine yeni browser.instances seçeneğini kullanın:

ts
export default defineConfig({
  test: {
    browser: {
      name: 'chromium', 
      providerOptions: { 
        launch: { devtools: true }, 
      }, 
      instances: [ 
        { 
          browser: 'chromium', 
          launch: { devtools: true }, 
        }, 
      ], 
    },
  },
})

Yeni browser.instances özelliği ile birden fazla tarayıcı yapılandırması da belirtebilirsiniz.

spy.mockReset Artık Orijinal Uygulamayı Geri Yüklüyor ​

Daha önce, bir spy'ı yeniden uygulamadan orijinal uygulamasına sıfırlamak için uygun bir yöntem yoktu. Artık spy.mockReset, uygulama fonksiyonunu sahte bir noop yerine orijinaline sıfırlar.

ts
const foo = {
  bar: () => 'Hello, world!',
};

vi.spyOn(foo, 'bar').mockImplementation(() => 'Hello, mock!');

foo.bar(); // 'Hello, mock!'

foo.bar.mockReset();

foo.bar(); // undefined
foo.bar(); // 'Hello, world!'

vi.spyOn Metot Zaten Mock'lanmışsa Mock'u Yeniden Kullanır ​

Daha önce Vitest, bir nesne üzerinde gözetleme yaparken her zaman yeni bir spy ataması yapardı. Bu durum, mockRestore ile hatalara yol açıyordu çünkü spy'ı orijinal fonksiyon yerine önceki spy'a geri yüklüyordu:

ts
vi.spyOn(fooService, 'foo').mockImplementation(() => 'bar');
vi.spyOn(fooService, 'foo').mockImplementation(() => 'bar');
vi.restoreAllMocks();
vi.isMockFunction(fooService.foo); // true
vi.isMockFunction(fooService.foo); // false

Sahte Zamanlayıcı Varsayılanları ​

Vitest artık varsayılan fakeTimers.toFake seçeneklerini sunmamaktadır. Bunun yerine, Vitest mevcutsa ( nextTick hariç) zamanlayıcıyla ilgili herhangi bir API'yi mock'lar. Bu, vi.useFakeTimers çağrıldığında performance.now()'un artık mock'landığı anlamına gelir.

ts
vi.useFakeTimers();

performance.now(); // original
performance.now(); // fake

vi.useFakeTimers çağrılırken veya yapılandırmada global olarak zamanlayıcıları belirterek önceki davranışa geri dönebilirsiniz:

ts
export default defineConfig({
  test: {
    fakeTimers: {
      toFake: [ 
        'setTimeout', 
        'clearTimeout', 
        'setInterval', 
        'clearInterval', 
        'setImmediate', 
        'clearImmediate', 
        'Date', 
      ] 
    },
  },
})

Daha Sıkı Hata Eşitliği ​

Vitest artık toEqual veya toThrowError kullanarak hataları karşılaştırırken daha fazla özelliği kontrol eder. Vitest artık name, message, cause ve AggregateError.errors özelliklerini karşılaştırıyor. Error.cause için karşılaştırma asimetrik olarak gerçekleştirilir:

ts
expect(new Error('hi', { cause: 'x' })).toEqual(new Error('hi')); // ✅
expect(new Error('hi')).toEqual(new Error('hi', { cause: 'x' })); // ❌

Daha fazla özellik kontrolüne ek olarak Vitest, artık hata prototiplerini de karşılaştırır. Örneğin, bir TypeError fırlatıldıysa, eşitlik kontrolü Error yerine TypeError'a başvurmalıdır:

ts
expect(() => {
  throw new TypeError('type error');
})
  .toThrowError(new Error('type error')) 
  .toThrowError(new TypeError('type error')); 

Daha fazla ayrıntı için PR'ye bakın: #5876.

module koşullu dışa aktarımı Vite 6'da varsayılan olarak çözülmez ​

Vite 6, daha esnek resolve.conditions seçeneklerine olanak tanır ve Vitest, varsayılan olarak module koşullu dışa aktarımını hariç tutacak şekilde yapılandırılmıştır. Vite tarafındaki değişikliklerin ayrıntıları için Vite 6 geçiş kılavuzuna da göz atın.

Custom Türü Kullanımdan Kaldırıldı API ​

Custom türü artık Test türünün bir takma adıdır. Vitest'in 2.1 sürümünde genel türleri güncellediğini ve dışa aktarılan adları RunnerCustomCase ve RunnerTestCase olarak değiştirdiğini unutmayın:

ts
import {
  RunnerCustomCase, 
  RunnerTestCase, 
} from 'vitest';

getCurrentSuite().custom() kullanıyorsanız, döndürülen görevin type'ı artık 'test''e eşit olacaktır. Custom türü Vitest 4'te kaldırılacaktır.

WorkspaceSpec Türü Artık Kullanılmıyor API ​

Genel API'de bu tür daha önce özel sıralayıcılarda kullanılıyordu. Lütfen bunun yerine TestSpecification'a geçiş yapın.

onTestFinished ve onTestFailed Artık Bir Bağlam Alıyor ​

onTestFinished ve onTestFailed kancaları daha önce ilk argüman olarak bir test sonucu alıyordu. Artık beforeEach ve afterEach gibi bir test bağlamı alırlar.

Snapshot API'sındaki Değişiklikler API ​

@vitest/snapshot içindeki genel Snapshot API'si, tek bir çalıştırma içinde birden fazla durumu desteklemek amacıyla değiştirildi. Daha fazla ayrıntı için PR'ye bakın: #6817

Bu değişikliklerin yalnızca Snapshot API'sini doğrudan kullanan geliştiricileri etkilediğini unutmayın. .toMatchSnapshot API'sinde herhangi bir değişiklik yapılmamıştır.

resolveConfig Tür İmzasındaki Değişiklikler API ​

resolveConfig artık daha kullanışlıdır. Zaten çözülmüş Vite yapılandırmasını kabul etmek yerine, artık bir kullanıcı yapılandırmasını kabul eder ve çözülmüş yapılandırmayı döndürür.

Bu fonksiyon dahili olarak kullanılmaz ve yalnızca genel bir API olarak sunulur.

vitest/reporters türleri temizlendi API ​

vitest/reporters giriş noktası artık yalnızca raporlayıcı uygulamalarını ve seçenek türlerini dışa aktarır. TestCase/TestSuite ve diğer görevle ilgili türlere erişmeniz gerekiyorsa, bunları ayrıca vitest/node'dan içe aktarmanız gerekir.

Kapsam, coverage.excludes üzerine yazılsa bile test dosyalarını yoksayar. ​

Artık test dosyalarını coverage.excludes üzerine yazarak kapsam raporuna dahil etmek mümkün değildir. Test dosyaları artık her zaman hariç tutulur.

Vitest 2.0'a Geçiş ​

Varsayılan Havuz forks ​

Vitest 2.0, daha iyi kararlılık sağlamak amacıyla pool için varsayılan yapılandırmayı 'forks' olarak değiştirmiştir. Tam motivasyonu PR'de okuyabilirsiniz.

pool belirtmeden poolOptions kullandıysanız, yapılandırmayı güncellemeniz gerekebilir:

ts
export default defineConfig({
  test: {
    poolOptions: {
      threads: { 
        singleThread: true, 
      }, 
      forks: { 
        singleFork: true, 
      }, 
    }
  }
})

Kancalar Bir Yığında Çalışıyor ​

Vitest 2.0'dan önce tüm kancalar paralel olarak çalışıyordu. 2.0'da tüm kancalar seri olarak çalışır. Ek olarak, afterAll/afterEach kancaları ters sırada çalışır.

Kancaların paralel yürütülmesine geri dönmek için sequence.hooks'u 'parallel' olarak değiştirin:

ts
export default defineConfig({
  test: {
    sequence: { 
      hooks: 'parallel', 
    }, 
  },
})

suite.concurrent Tüm Testleri Eşzamanlı Çalıştırır ​

Daha önce, bir pakette concurrent belirtmek, eşzamanlı testleri paketlere göre gruplandırır ve bunları sırayla çalıştırırdı. Artık, Jest'in davranışını takiben, tüm testler eşzamanlı olarak çalışır ( maxConcurrency sınırlarına tabi olarak).

V8 Kapsamının coverage.ignoreEmptyLines Varsayılan Olarak Etkinleştirildi ​

coverage.ignoreEmptyLines varsayılan değeri artık true'dur. Bu önemli değişiklik, kod kapsamı raporlarını etkileyebilir ve bazı projeler için kapsam eşiklerinde ayarlamalar gerektirebilir. Bu ayarlama yalnızca coverage.provider 'v8' olduğunda varsayılan ayarı etkiler.

watchExclude Seçeneğinin Kaldırılması ​

Vitest, Vite'ın izleyicisini kullanır. Dosyaları veya dizinleri server.watch.ignored'a ekleyerek hariç tutun:

ts
export default defineConfig({
  server: { 
    watch: { 
      ignored: ['!node_modules/examplejs'] 
    } 
  } 
})

--segfault-retry Kaldırıldı ​

Varsayılan havuzdaki değişikliklerle birlikte, bu seçeneğe artık gerek yoktur. Segfault hataları yaşıyorsanız, 'forks' havuzuna geçmeyi deneyin. Sorun devam ederse, lütfen bir yeniden üretimle birlikte yeni bir sorun açın.

Paket Görevlerindeki Boş Görev Kaldırıldı ​

Bu, gelişmiş görev API'sında yapılan bir değişikliktir. Daha önce, .suite üzerinde gezinmek, bir dosya görevi yerine kullanılan boş dahili pakete yol açardı.

Bu, .suite'i isteğe bağlı hale getirir; görev en üst düzeyde tanımlanmışsa, bir paketi olmayacaktır. Artık tüm görevlerde (dosya görevinin kendisi dahil, bu yüzden sonsuz özyinelemeye düşmemeye dikkat edin) bulunan .file özelliğine geri dönebilirsiniz.

Bu değişiklik ayrıca dosyayı expect.getState().currentTestName'den kaldırır ve expect.getState().testPath'i zorunlu kılar.

task.meta JSON Raporlayıcıya Eklendi ​

JSON raporlayıcı artık her onay sonucunda task.meta'yı yazdırır.

Mock Fonksiyonlarının Basitleştirilmiş Genel Türleri (örn. vi.fn<T>, Mock<T>) ​

Daha önce vi.fn<TArgs, TReturn>, argümanlar ve dönüş değeri için ayrı ayrı iki genel tür kabul ediyordu. Bu, kullanımı basitleştirmek için doğrudan bir fonksiyon türü vi.fn<T> kabul edecek şekilde değiştirildi.

ts
import { vi } from 'vitest';
import type { Mock } from 'vitest';

const add = (x: number, y: number): number => x + y;

// using vi.fn<T>
const mockAdd = vi.fn<Parameters<typeof add>, ReturnType<typeof add>>(); 
const mockAdd = vi.fn<typeof add>(); 

// using Mock<T>
const mockAdd: Mock<Parameters<typeof add>, ReturnType<typeof add>> = vi.fn(); 
const mockAdd: Mock<typeof add> = vi.fn(); 

Çözülmüş mock.results'a Erişme ​

Daha önce Vitest, fonksiyon bir Promise döndürürse mock.results değerlerini çözüyordu. Artık, döndürülen Promise çözüldüğünde veya reddedildiğinde doldurulan ayrı bir mock.settledResults özelliği bulunmaktadır.

ts
const fn = vi.fn().mockResolvedValueOnce('result');
await fn();

const result = fn.mock.results[0]; // 'result'
const result = fn.mock.results[0]; // 'Promise<result>'

const settledResult = fn.mock.settledResults[0]; // 'result'

Bu değişiklikle birlikte, daha önce toHaveReturned kullandıysanız geçişi kolaylaştırmak için toHaveReturned'a benzer yeni toHaveResolved* eşleştiricileri de sunuyoruz:

ts
const fn = vi.fn().mockResolvedValueOnce('result');
await fn();

expect(fn).toHaveReturned('result'); 
expect(fn).toHaveResolved('result'); 

Tarayıcı Modu ​

Vitest Tarayıcı Modu, beta döngüsü boyunca birçok değişikliğe uğradı. Tarayıcı Modu hakkındaki felsefemizi GitHub tartışma sayfasında okuyabilirsiniz.

Değişikliklerin çoğu eklemeydi, ancak bazı küçük kırılma değişiklikleri de vardı:

  • none sağlayıcısı preview olarak yeniden adlandırıldı #5842
  • preview sağlayıcısı artık varsayılan #5842
  • indexScripts orchestratorScripts olarak yeniden adlandırıldı #5842

Kullanımdan Kaldırılan Seçenekler Kaldırıldı ​

Bazı kullanımdan kaldırılan seçenekler kaldırıldı:

  • vitest typecheck komutu - bunun yerine vitest --typecheck kullanın.
  • VITEST_JUNIT_CLASSNAME ve VITEST_JUNIT_SUITE_NAME ortam değişkenleri (bunun yerine raporlayıcı seçeneklerini kullanın).
  • c8 kapsamı kontrolü (bunun yerine coverage-v8 kullanın).
  • SnapshotEnvironment'ın vitest'ten dışa aktarımı - bunun yerine vitest/snapshot'tan içe aktarın.
  • SpyInstance, MockInstance lehine kaldırıldı.

Vitest 1.0'a Geçiş ​

Minimum Gereksinimler ​

Vitest 1.0, Vite 5.0 ve Node.js 18 veya daha yüksek bir sürüm gerektirir.

Tüm @vitest/* alt paketleri Vitest sürüm 1.0 gerektirir.

Anlık Görüntü Güncellemesi #3961 ​

Anlık görüntülerdeki tırnak işaretleri artık kaçış karakteriyle gösterilmiyor ve tüm anlık görüntüler, dize tek bir satır olsa bile ters tırnak işaretleri (`) kullanır.

  1. Tırnak işaretleri artık kaçış karakteriyle gösterilmiyor:
diff
expect({ foo: 'bar' }).toMatchInlineSnapshot(`
  Object {
-    \\"foo\\": \\"bar\\",
+    "foo": "bar",
  }
`)
  1. Tek satırlık anlık görüntüler artık ':' yerine "`" tırnak işaretleri kullanıyor:
diff
- expect('some string').toMatchInlineSnapshot('"some string"')
+ expect('some string').toMatchInlineSnapshot(`"some string"`)

@vitest/snapshot paketinde de değişiklikler yapılmıştır. Doğrudan kullanmıyorsanız, herhangi bir şeyi değiştirmenize gerek yoktur.

  • equalityCheck metodunu geçersiz kılmak için artık SnapshotClient'ı genişletmenize gerek yoktur: bir örneği başlatırken isEqual olarak geçmeniz yeterlidir.
  • client.setTest client.startCurrentRun olarak yeniden adlandırıldı.
  • client.resetCurrent client.finishCurrentRun olarak yeniden adlandırıldı.

Havuzlar Standartlaştırıldı #4172 ​

Koşucuyu ihtiyaçlarınıza göre yapılandırmayı kolaylaştırmak için birçok yapılandırma seçeneğini kaldırdık. --threads veya diğer ilgili bayraklara güveniyorsanız, lütfen geçiş örneklerine bir göz atın.

  • --threads artık --pool=threads
  • --no-threads artık --pool=forks
  • --single-thread artık --poolOptions.threads.singleThread
  • --experimental-vm-threads artık --pool=vmThreads
  • --experimental-vm-worker-memory-limit artık --poolOptions.vmThreads.memoryLimit
  • --isolate artık --poolOptions.<pool-name>.isolate ve browser.isolate
  • test.maxThreads artık test.poolOptions.<pool-name>.maxThreads
  • test.minThreads artık test.poolOptions.<pool-name>.minThreads
  • test.useAtomics artık test.poolOptions.<pool-name>.useAtomics
  • test.poolMatchGlobs.child_process artık test.poolMatchGlobs.forks
  • test.poolMatchGlobs.experimentalVmThreads artık test.poolMatchGlobs.vmThreads
diff
{
  scripts: {
-    "test": "vitest --no-threads"
     // For identical behaviour:
+    "test": "vitest --pool forks --poolOptions.forks.singleFork"
     // Or multi parallel forks:
+    "test": "vitest --pool forks"

  }
}
diff
{
  scripts: {
-    "test": "vitest --experimental-vm-threads"
+    "test": "vitest --pool vmThreads"
  }
}
diff
{
  scripts: {
-    "test": "vitest --isolate false"
+    "test": "vitest --poolOptions.threads.isolate false"
  }
}
diff
{
  scripts: {
-    "test": "vitest --no-threads --isolate false"
+    "test": "vitest --pool forks --poolOptions.forks.isolate false"
  }
}

Kapsamdaki Değişiklikler #4265, #4442 ​

coverage.all seçeneği artık varsayılan olarak etkindir. Bu, coverage.include desenine uyan tüm proje dosyalarının yürütülmese bile işleneceği anlamına gelir.

Kapsam eşikleri API'sinin şekli değiştirildi ve artık glob desenleri kullanarak belirli dosyalar için eşiklerin belirtilmesini destekler:

diff
export default defineConfig({
  test: {
    coverage: {
-      perFile: true,
-      thresholdAutoUpdate: true,
-      100: true,
-      lines: 100,
-      functions: 100,
-      branches: 100,
-      statements: 100,
+      thresholds: {
+        perFile: true,
+        autoUpdate: true,
+        100: true,
+        lines: 100,
+        functions: 100,
+        branches: 100,
+        statements: 100,
+      }
    }
  }
})

Mock Türleri #4400 ​

Jest tarzı "Mock" adlandırması lehine birkaç tür kaldırıldı.

diff
- import { EnhancedSpy, SpyInstance } from 'vitest'
+ import { MockInstance } from 'vitest'

WARNING

SpyInstance, MockInstance lehine kullanımdan kaldırılmıştır ve bir sonraki ana sürümde kaldırılacaktır.

Zamanlayıcı Mock'ları #3925 ​

vi.useFakeTimers() artık process.nextTick'i otomatik olarak mock'lamaz. process.nextTick'i vi.useFakeTimers({ toFake: ['nextTick'] }) kullanarak açıkça belirterek mock'lamak hala mümkündür.

Ancak, --pool=forks kullanırken process.nextTick'i mock'lamak mümkün değildir. process.nextTick mock'lamasına ihtiyacınız varsa farklı bir --pool seçeneği kullanın.

Jest'ten Geçiş ​

Vitest, Jest ile uyumlu bir API ile tasarlanmıştır, bu da Jest'ten geçişi mümkün olduğunca basit hale getirmeyi amaçlar. Bu çabalara rağmen, yine de aşağıdaki farklılıklarla karşılaşabilirsiniz:

Varsayılan Olarak Globals ​

Jest'in globals API'si varsayılan olarak etkindir. Vitest'te ise değildir. Ya globals yapılandırma ayarı aracılığıyla globals'ı etkinleştirebilir ya da kodunuzu vitest modülünden içe aktarmaları kullanacak şekilde güncelleyebilirsiniz.

Globals'ı devre dışı bırakmaya karar verirseniz, testing-library gibi yaygın kütüphanelerin otomatik DOM temizlemesini çalıştırmayacağını unutmayın.

spy.mockReset ​

Jest'in mockReset'i, mock uygulamasını undefined döndüren boş bir fonksiyonla değiştirir.

Vitest'in mockReset'i, mock uygulamasını orijinaline sıfırlar. Yani, vi.fn(impl) tarafından oluşturulan bir mock'u sıfırlamak, mock uygulamasını impl'e sıfırlar.

Modül Mock'ları ​

Jest'te bir modülü mock'larken, fabrika argümanının dönüş değeri varsayılan dışa aktarımdır. Vitest'te, fabrika argümanı her dışa aktarımın açıkça tanımlandığı bir nesne döndürmelidir. Örneğin, aşağıdaki jest.mock'un aşağıdaki gibi güncellenmesi gerekir:

ts
jest.mock('./some-path', () => 'hello') 
vi.mock('./some-path', () => ({ 
  default: 'hello', 
})) 

Daha fazla ayrıntı için lütfen vi.mock API bölümüne bakın.

Otomatik Mock'lama Davranışı ​

Jest'in aksine, <root>/__mocks__ içindeki mock'lanmış modüller vi.mock() çağrılmadıkça yüklenmez. Jest'teki gibi her testte mock'lanmalarını istiyorsanız, bunları setupFiles içinde mock'layabilirsiniz.

Mock'lanmış Bir Paketin Orijinalini İçe Aktarma ​

Bir paketi yalnızca kısmen mock'luyorsanız, daha önce Jest'in requireActual fonksiyonunu kullanmış olabilirsiniz. Vitest'te, bu çağrıları vi.importActual ile değiştirmelisiniz.

ts
const { cloneDeep } = jest.requireActual('lodash/cloneDeep'); 
const { cloneDeep } = await vi.importActual('lodash/cloneDeep'); 

Mock'lamayı harici kütüphanelere genişletme ​

Jest'in varsayılan olarak yaptığı gibi, bir modülü mock'larken ve bu mock'lamanın aynı modülü kullanan diğer harici kütüphanelere genişletilmesini istediğinizde, hangi üçüncü taraf kütüphanenin mock'lanmasını istediğinizi açıkça belirtmelisiniz. Böylece harici kütüphane, server.deps.inline kullanarak kaynak kodunuzun bir parçası olur.

server.deps.inline: ["lib-name"]

expect.getState().currentTestName ​

Vitest'in test adları, testleri paketlerden ayırmayı kolaylaştırmak için > sembolüyle birleştirilirken, Jest boşluk () kullanır.

diff
- `${describeTitle} ${testTitle}`
+ `${describeTitle} > ${testTitle}`

Ortam Değişkenleri ​

Jest gibi, Vitest de daha önce ayarlanmamışsa NODE_ENV'i test olarak ayarlar. Vitest ayrıca JEST_WORKER_ID'ye karşılık gelen VITEST_POOL_ID'ye (her zaman maxThreads'a eşit veya daha az) sahiptir, bu yüzden buna güveniyorsanız, yeniden adlandırmayı unutmayın. Vitest ayrıca çalışan bir işçinin benzersiz kimliği olan VITEST_WORKER_ID'yi de açığa çıkarır - bu sayı maxThreads'tan etkilenmez ve oluşturulan her işçiyle birlikte artar.

Özelliği Değiştir ​

Nesneyi değiştirmek isterseniz, Jest'te replaceProperty API kullanırsınız. Vitest'te de aynısını yapmak için vi.stubEnv veya vi.spyOn kullanabilirsiniz.

Done Geri Çağrısı ​

Vitest v0.10.0'dan itibaren, testleri bildirme geri çağırma stili kullanımdan kaldırılmıştır. Bunları async/await fonksiyonlarını kullanacak şekilde yeniden yazabilir veya geri çağırma stilini taklit etmek için Promise kullanabilirsiniz.

js
it('should work', (done) => {  
it('should work', () => new Promise(done => { 
  // ...
  done()
}) 
})) 

Kancalar ​

beforeAll/beforeEach kancaları Vitest'te temizleme fonksiyonu döndürebilir. Bu nedenle, undefined veya null dışında bir şey döndürüyorlarsa kanca bildirimlerinizi yeniden yazmanız gerekebilir:

ts
beforeEach(() => setActivePinia(createTestingPinia())) 
beforeEach(() => { setActivePinia(createTestingPinia()) }) 

Jest'te kancalar sırayla (birbiri ardına) çağrılır. Varsayılan olarak, Vitest kancaları paralel olarak çalıştırır. Jest'in davranışını kullanmak için sequence.hooks seçeneğini güncelleyin:

ts
export default defineConfig({
  test: {
    sequence: { 
      hooks: 'list', 
    } 
  }
})

Türler ​

Vitest'in jest ad alanına eşdeğeri yoktur, bu nedenle türleri doğrudan vitest'ten içe aktarmanız gerekecektir:

ts
let fn: jest.Mock<(name: string) => number>; 
import type { Mock } from 'vitest'; 
let fn: Mock<(name: string) => number>; 

Zamanlayıcılar ​

Vitest, Jest'in eski zamanlayıcılarını desteklemez.

Zaman Aşımı ​

jest.setTimeout kullandıysanız, vi.setConfig'e geçmeniz gerekecektir:

ts
jest.setTimeout(5_000); 
vi.setConfig({ testTimeout: 5_000 }); 

Vue Anlık Görüntüleri ​

Bu Jest'e özgü bir özellik değildir, ancak daha önce Jest'i vue-cli ön ayarıyla kullandıysanız, jest-serializer-vue paketini yüklemeniz ve bunu setupFiles içinde kullanmanız gerekecektir:

js
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    setupFiles: ['./tests/unit/setup.js'],
  },
});
js
import vueSnapshotSerializer from 'jest-serializer-vue';

expect.addSnapshotSerializer(vueSnapshotSerializer);

Aksi takdirde anlık görüntülerinizde çok sayıda kaçış karakteri " olacaktır.

Pager
Önceki sayfaSık Karşılaşılan Hatalar
Sonraki sayfaTest Performansını Profillendirme

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/migration

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2021-Present Vitest Team