TestSuite
TestSuite
sınıfı tek bir test paketini temsil eder. Bu sınıf yalnızca ana iş parçacığında mevcuttur. Çalışma zamanı görevleriyle çalışıyorsanız, lütfen "Çalıştırıcı API" bölümüne başvurun.
Bir TestSuite
örneği her zaman suite
değerine sahip bir type
özelliğine sahiptir. Bunu farklı görev türleri arasında ayrım yapmak için kullanabilirsiniz:
if (task.type === 'suite') {
task; // TestSuite
}
project
Bu, testin ait olduğu TestProject
referansıdır.
module
Bu, testin tanımlandığı TestModule
doğrudan referansıdır.
name
Bu, describe
işlevine iletilen paketin adıdır.
import { describe } from 'vitest';
// [!code word:'doğrulama mantığı']
describe('doğrulama mantığı', () => {
// ...
});
fullName
Paketin tam adı, tüm üst paketleri >
sembolüyle ayrılmış olarak içerir. Örneğin, bu paketin tam adı "doğrulama mantığı > şehirleri doğrulama" şeklinde olacaktır:
import { describe, test } from 'vitest';
// [!code word:'doğrulama mantığı']
// [!code word:'şehirleri doğrulama']
describe('doğrulama mantığı', () => {
describe('şehirleri doğrulama', () => {
// ...
});
});
id
Bu, test paketinin benzersiz tanımlayıcısıdır. Bu kimlik deterministiktir ve birden çok çalıştırmada aynı paket için değişmeyecektir. Kimlik, proje adına, modül kimliğine ve paket sırasına göre oluşturulur.
ID şu şekilde görünür:
1223128da3_0_0_0
^^^^^^^^^^ dosya hash'i
^ paket dizini
^ iç içe paket dizini
^ test dizini
TIP
Vitest 3'ten itibaren kullanılabilen vitest/node
içindeki generateFileHash
işleviyle dosya karması oluşturabilirsiniz:
import { generateFileHash } from 'vitest/node';
const hash = generateFileHash(
'/file/path.js', // göreli yol
undefined // proje adı veya ayarlanmamışsa `undefined` değeri
);
DANGER
Kimliği ayrıştırmaya çalışmayın. Başında eksi işareti bulunabilir: -1223128da3_0_0_0
.
location
Paketin tanımlandığı modüldeki konumu. Konumlar yalnızca includeTaskLocation
yapılandırma seçeneği etkinleştirilirse toplanır. --reporter=html
, --ui
veya --browser
bayrakları kullanıldığında bu seçeneğin otomatik olarak etkinleştirildiğini unutmayın.
Bu paketin konumu { line: 3, column: 1 }
olacaktır:
import { describe } from 'vitest'
describe('doğrulama doğru çalışıyor', () => {
// ...
})
parent
Üst paket. Eğer paket doğrudan modül içinde çağrıldıysa, üst öğe modülün kendisi olur.
options
interface TaskOptions {
readonly each: boolean | undefined;
readonly fails: boolean | undefined;
readonly concurrent: boolean | undefined;
readonly shuffle: boolean | undefined;
readonly retry: number | undefined;
readonly repeats: number | undefined;
readonly mode: 'run' | 'only' | 'skip' | 'todo';
}
Bu, paketle birlikte toplanan seçeneklerdir.
children
Bu, geçerli paketin içindeki tüm paketler ve testlerden oluşan bir koleksiyondur.
for (const task of suite.children) {
if (task.type === 'test') {
console.log('test', task.fullName);
} else {
// task bir TestSuite'dur
console.log('paket', task.name);
}
}
WARNING
suite.children
'ın yalnızca ilk iç içe geçme düzeyini yineleyeceğini, daha derinlere inmeyeceğini unutmayın. Tüm testleri veya paketleri yinelemeniz gerekiyorsa, children.allTests()
veya children.allSuites()
yöntemlerini kullanın. Her şeyi yinelemeniz gerekiyorsa, özyinelemeli bir işlev kullanın:
function visit(collection: TestCollection) {
for (const task of collection) {
if (task.type === 'suite') {
// bir paketi raporlayın
visit(task.children);
} else {
// bir testi raporlayın
}
}
}
ok
function ok(): boolean;
Bu, paketin başarısız testlerinin olup olmadığını denetler. Paket toplama sırasında başarısız olursa bu da false
değerini döndürür. Bu durumda, fırlatılan hatalar için errors()
yöntemini kontrol edin.
state
function state(): TestSuiteState;
Paketin çalışma durumunu denetler. Olası dönüş değerleri:
- pending: bu paketteki testler henüz çalışmayı tamamlamadı.
- failed: bu pakette başarısız testler var veya testler toplanamadı.
errors()
boş değilse, paketin testleri toplamada başarısız olduğu anlamına gelir. - passed: bu paketin içindeki tüm testler geçti.
- skipped: bu paket toplama sırasında atlandı.
WARNING
Test modülünün de aynı değerleri döndüren bir state
yöntemi olduğunu, ancak modül henüz yürütülmediyse ek olarak bir queued
durumu da döndürebileceğini unutmayın.
errors
function errors(): TestError[];
Toplama sırasında, test çalıştırması dışında meydana gelen sözdizimi hataları gibi hatalar.
import { describe } from 'vitest';
describe('toplama başarısız oldu', () => {
throw new Error('özel bir hata');
});
WARNING
Hataların basit nesnelere serileştirildiğini unutmayın: instanceof Error
her zaman false
değerini döndürecektir.
meta 3.1.0+
function meta(): TaskMeta;
Yürütülmesi veya toplanması sırasında pakete eklenen özel meta verilerdir. Meta veriler, bir test çalıştırması sırasında task.meta
nesnesine bir özellik atanarak eklenebilir:
import { test } from 'vitest';
describe('doğrulama doğru çalışıyor', task => {
// toplama sırasında "decorated" değerini ata
task.meta.decorated = false;
test('bazı testler', ({ task }) => {
// test çalıştırması sırasında "decorated" değerini ata,
// yalnızca onTestCaseReady kancasında kullanılabilir olacaktır
task.suite.meta.decorated = false;
});
});
TIP
Meta veriler toplama sırasında (test
işlevinin dışında) eklendiyse, özel raporlayıcıdaki onTestModuleCollected
kancasında kullanılabilir olacaktır.