Reporter erweitern
WARNING
Dies ist eine fortgeschrittene API. Wenn Sie nur integrierte Reporter konfigurieren möchten, lesen Sie die Anleitung "Reporter".
Sie können Reporter aus vitest/reporters
importieren und erweitern, um Ihre benutzerdefinierten Reporter zu erstellen.
Integrierte Reporter erweitern
Im Allgemeinen müssen Sie Ihren Reporter nicht von Grund auf neu erstellen. vitest
wird mit mehreren Standard-Reportern geliefert, die Sie erweitern können.
import { DefaultReporter } from 'vitest/reporters';
export default class MyDefaultReporter extends DefaultReporter {
// Logik implementieren
}
Alternativ können Sie Ihren Reporter auch von Grund auf neu erstellen. Erweitern Sie dazu einfach die Klasse BaseReporter
und implementieren Sie die benötigten Methoden.
Hier ist ein Beispiel für einen benutzerdefinierten Reporter:
import { BaseReporter } from 'vitest/reporters';
export default class CustomReporter extends BaseReporter {
onCollected() {
const files = this.ctx.state.getFiles(this.watchFilters);
this.reportTestSummary(files);
}
}
Oder implementieren Sie das Reporter
-Interface:
import type { Reporter } from 'vitest/node';
export default class CustomReporter implements Reporter {
onCollected() {
// Informationen ausgeben
}
}
Anschließend können Sie Ihren benutzerdefinierten Reporter in der Datei vitest.config.ts
verwenden:
import { defineConfig } from 'vitest/config';
import CustomReporter from './custom-reporter.js';
export default defineConfig({
test: {
reporters: [new CustomReporter()],
},
});
Berichtete Aufgaben
Anstatt die direkt von Reportern empfangenen Aufgaben zu verwenden, wird empfohlen, stattdessen die Reported Tasks API zu nutzen.
Sie können auf diese API zugreifen, indem Sie vitest.state.getReportedEntity(runnerTask)
aufrufen:
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) {
// Hinweis: Die alte Aufgabenimplementierung verwendet "file" anstelle von "module".
const testModule = this.vitest.state.getReportedEntity(
file
) as TestModule;
for (const task of testModule.children) {
// ^?
console.log('finished', task.type, task.fullName);
}
}
}
}
Exportierte Reporter
vitest
wird mit einigen integrierten Reportern geliefert, die Sie direkt verwenden können.
Integrierte Reporter:
BasicReporter
DefaultReporter
DotReporter
JsonReporter
VerboseReporter
TapReporter
JUnitReporter
TapFlatReporter
HangingProcessReporter
Abstrakte Basisreporter:
BaseReporter
Reporter-Schnittstellen:
Reporter