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 indeksi
TIP
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.