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:
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:
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:
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.
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:
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.
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:
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:
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:
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:
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:
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:
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:
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.
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.
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:
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ı #5842preview
sağlayıcısı artık varsayılan #5842indexScripts
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 yerinevitest --typecheck
kullanın.VITEST_JUNIT_CLASSNAME
veVITEST_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
'ınvitest
'ten dışa aktarımı - bunun yerinevitest/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.
- Tırnak işaretleri artık kaçış karakteriyle gösterilmiyor:
expect({ foo: 'bar' }).toMatchInlineSnapshot(`
Object {
- \\"foo\\": \\"bar\\",
+ "foo": "bar",
}
`)
- Tek satırlık anlık görüntüler artık ':' yerine "`" tırnak işaretleri kullanıyor:
- 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ıkSnapshotClient
'ı genişletmenize gerek yoktur: bir örneği başlatırkenisEqual
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
vebrowser.isolate
test.maxThreads
artıktest.poolOptions.<pool-name>.maxThreads
test.minThreads
artıktest.poolOptions.<pool-name>.minThreads
test.useAtomics
artıktest.poolOptions.<pool-name>.useAtomics
test.poolMatchGlobs.child_process
artıktest.poolMatchGlobs.forks
test.poolMatchGlobs.experimentalVmThreads
artıktest.poolMatchGlobs.vmThreads
{
scripts: {
- "test": "vitest --no-threads"
// For identical behaviour:
+ "test": "vitest --pool forks --poolOptions.forks.singleFork"
// Or multi parallel forks:
+ "test": "vitest --pool forks"
}
}
{
scripts: {
- "test": "vitest --experimental-vm-threads"
+ "test": "vitest --pool vmThreads"
}
}
{
scripts: {
- "test": "vitest --isolate false"
+ "test": "vitest --poolOptions.threads.isolate false"
}
}
{
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:
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ı.
- 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:
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.
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.
- `${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.
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:
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:
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:
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:
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:
import { defineConfig } from 'vite';
export default defineConfig({
test: {
setupFiles: ['./tests/unit/setup.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.