Raporlayıcıları Genişletme
WARNING
Bu, gelişmiş bir API'dir. Yalnızca yerleşik raporlayıcıları yapılandırmak istiyorsanız, "Raporlayıcılar" kılavuzunu okuyun.
vitest/reporters
'tan raporlayıcıları içe aktarabilir ve özel raporlayıcılarınızı oluşturmak için bunları genişletebilirsiniz.
Yerleşik Raporlayıcıları Genişletme
Genel olarak, raporlayıcınızı sıfırdan oluşturmanıza gerek yoktur. vitest
, genişletebileceğiniz birkaç varsayılan raporlayıcı ile birlikte gelir.
import { DefaultReporter } from 'vitest/reporters';
export default class MyDefaultReporter extends DefaultReporter {
// Ek özelleştirmeler buraya eklenebilir
}
Elbette, raporlayıcınızı sıfırdan da oluşturabilirsiniz. Bunun için BaseReporter
sınıfını genişletmeniz ve ihtiyacınız olan yöntemleri uygulamanız yeterlidir.
İşte özel bir raporlayıcı örneği:
import { BaseReporter } from 'vitest/reporters';
export default class CustomReporter extends BaseReporter {
onCollected() {
const files = this.ctx.state.getFiles(this.watchFilters);
this.reportTestSummary(files);
}
}
Veya Reporter
arayüzünü uygulayabilirsiniz:
import type { Reporter } from 'vitest/node';
export default class CustomReporter implements Reporter {
onCollected() {
// Özel raporlama mantığı buraya yazılır
}
}
Ardından özel raporlayıcınızı vitest.config.ts
dosyasında kullanabilirsiniz:
import { defineConfig } from 'vitest/config';
import CustomReporter from './custom-reporter.js';
export default defineConfig({
test: {
reporters: [new CustomReporter()],
},
});
Raporlanan Görevler
Raporlayıcıların doğrudan aldığı görevleri kullanmak yerine, Raporlanan Görevler API'sini kullanmanız tavsiye edilir. Bu API, daha tutarlı ve güçlü bir raporlama deneyimi sunar.
Bu API'ye vitest.state.getReportedEntity(runnerTask)
çağrısı yaparak erişebilirsiniz:
import type { Reporter, RunnerTestFile, TestModule, Vitest } from 'vitest/node';
class MyReporter implements Reporter {
private vitest!: Vitest;
onInit(vitest: Vitest) {
this.vitest = vitest;
}
onFinished(files: RunnerTestFile[]) {
for (const file of files) {
// Eski görev uygulamasında "module" yerine "file" kullanıldığına dikkat edin.
const testModule = this.vitest.state.getReportedEntity(
file
) as TestModule;
for (const task of testModule.children) {
// ^?
console.log('finished', task.type, task.fullName);
}
}
}
}
Dışa Aktarılan Raporlayıcılar
vitest
, hazır olarak kullanabileceğiniz birkaç yerleşik raporlayıcı ile birlikte gelir.
Yerleşik Raporlayıcılar:
BasicReporter
DefaultReporter
DotReporter
JsonReporter
VerboseReporter
TapReporter
JUnitReporter
TapFlatReporter
HangingProcessReporter
Temel Soyut Raporlayıcılar:
BaseReporter
Arayüz Raporlayıcılar:
Reporter