TestCase
TestCase sınıfı tek bir testi temsil eder. Bu sınıf yalnızca ana iş parçacığında (main thread) mevcuttur. Çalışma zamanı görevleriyle (runtime tasks) çalışıyorsanız "Runner API" bölümüne bakın.
TestCase örneği her zaman test değerine sahip bir type özelliğine sahiptir. Bunu farklı görev türlerini ayırt etmek için kullanabilirsiniz:
if (task.type === 'test') {
task; // TestCase
}project
Bu, testin ait olduğu TestProject projesine referanstır.
module
Bu, testin tanımlandığı TestModule modülüne doğrudan bir referanstır.
name
Bu, test fonksiyonuna iletilen test adıdır.
import { test } from 'vitest';
// [!code word:'the validation works correctly']
test('the validation works correctly', () => {
// ...
});fullName
Tüm üst suite'ler > sembolüyle ayrılmış olarak testin tam adıdır. Bu testin tam adı "the validation logic > the validation works correctly" şeklindedir:
import { describe, test } from 'vitest';
// [!code word:'the validation works correctly']
// [!code word:'the validation logic']
describe('the validation logic', () => {
test('the validation works correctly', () => {
// ...
});
});id
Bu, testin benzersiz kimliğidir. Bu kimlik deterministiktir ve birden çok çalıştırmada aynı test için aynı kalacaktır. Kimlik, proje adına, modül kimliğine ve test sırasına dayanır.
Kimlik şöyle görünür:
1223128da3_0_0
^^^^^^^^^^ dosya hash'i
^ suite indeksi
^ test indeksiTIP
Vitest 3'ten beri kullanılabilen vitest/node'dan generateFileHash fonksiyonu ile dosya hash'i oluşturabilirsiniz:
import { generateFileHash } from 'vitest/node';
const hash = generateFileHash(
'/file/path.js', // göreli yol
undefined // proje adı veya ayarlanmamışsa `undefined`
);DANGER
Kimliği ayrıştırmaya çalışmayın. Başında eksi işareti olabilir: -1223128da3_0_0_0.
location
Testin tanımlandığı modüldeki konum. Konumlar yalnızca includeTaskLocation yapılandırmada etkinleştirilirse toplanır. --reporter=html, --ui veya --browser bayrakları kullanılırsa bu seçeneğin otomatik olarak etkinleştirildiğini unutmayın.
Bu testin konumu { line: 3, column: 1 }'e eşit olacaktır:
import { test } from 'vitest'
test('the validation works correctly', () => {
// ...
})parent
Üst suite. Test doğrudan modül içinde çağrıldıysa, üst öğe modülün kendisi olacaktır.
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';
}Testin tanımlandığı seçenekler.
ok
function ok(): boolean;Testin suite'i başarısız edip etmediğini kontrol eder. Test henüz tamamlanmadıysa veya atlandıysa true döndürür.
meta
function meta(): TaskMeta;Yürütülmesi sırasında teste eklenen özel meta veriler. Meta, bir test çalışması sırasında ctx.task.meta nesnesine bir özellik atayarak eklenebilir:
import { test } from 'vitest';
test('the validation works correctly', ({ task }) => {
// ...
task.meta.decorated = false;
});Test henüz çalışmayı bitirmediyse, meta boş bir nesne olacaktır.
result
function result(): TestResult;Test sonuçları. Test henüz bitmediyse veya yeni toplandıysa, TestResultPending'e eşit olacaktır:
export interface TestResultPending {
/**
* Test toplandı, ancak henüz çalışmayı bitirmedi.
*/
readonly state: 'pending';
/**
* Bekleyen testlerde hata yoktur.
*/
readonly errors: undefined;
}Test atlandıysa (skipped), dönüş değeri TestResultSkipped olacaktır:
interface TestResultSkipped {
/**
* Test `skip` veya `todo` bayrağıyla atlandı.
* Hangisinin kullanıldığını `options.mode` seçeneğinde görebilirsiniz.
*/
readonly state: 'skipped';
/**
* Atlanan testlerde hata yoktur.
*/
readonly errors: undefined;
/**
* `ctx.skip(note)`'a iletilen özel bir not.
*/
readonly note: string | undefined;
}TIP
Başka bir testin only bayrağı varsa ve test atlandıysa, options.mode skip'e eşit olacaktır.
Test başarısız olursa, dönüş değeri TestResultFailed olacaktır:
interface TestResultFailed {
/**
* Test çalıştırılamadı.
*/
readonly state: 'failed';
/**
* Test yürütülmesi sırasında fırlatılan hatalar.
*/
readonly errors: ReadonlyArray<TestError>;
}Test geçtiyse, dönüş değeri TestResultPassed olacaktır:
interface TestResultPassed {
/**
* Test başarıyla tamamlandı.
*/
readonly state: 'passed';
/**
* Test yürütülmesi sırasında fırlatılan hatalar.
*/
readonly errors: ReadonlyArray<TestError> | undefined;
}WARNING
passed durumundaki testin hala hataları olabileceğini unutmayın - bu, retry en az bir kez tetiklenirse olabilir.
diagnostic
function diagnostic(): TestDiagnostic | undefined;Test hakkında süre, bellek kullanımı vb. gibi faydalı bilgiler:
interface TestDiagnostic {
/**
* Testin çalışma süresi `slowTestThreshold`'un üzerindeyse.
*/
readonly slow: boolean;
/**
* Testin kullandığı bellek miktarı bayt cinsinden.
* Bu değer yalnızca test `logHeapUsage` bayrağıyla yürütülürse kullanılabilir.
*/
readonly heap: number | undefined;
/**
* Testi çalıştırmak için geçen süre ms cinsinden.
*/
readonly duration: number;
/**
* Testin başladığı an ms cinsinden.
*/
readonly startTime: number;
/**
* Testin yeniden denendiği sayı.
*/
readonly retryCount: number;
/**
* `repeats` seçeneğiyle yapılandırıldığı gibi testin tekrarlandığı sayı.
* Test tekrar sırasında başarısız olursa ve `retry` yapılandırılmamışsa bu değer daha düşük olabilir.
*/
readonly repeatCount: number;
/**
* Test ikinci bir yeniden denemede geçtiyse.
*/
readonly flaky: boolean;
}INFO
Test henüz çalıştırılmak üzere zamanlanmadıysa diagnostic() undefined döndürecektir.