Rozszerzanie Reporterów
WARNING
To jest zaawansowane API. Jeśli chcesz tylko skonfigurować wbudowane reportery, przeczytaj przewodnik "Reportery".
Możesz importować reportery z vitest/reporters
i rozszerzać je, aby tworzyć własne, niestandardowe reportery.
Rozszerzanie wbudowanych reporterów
Zasadniczo nie musisz tworzyć reportera od podstaw. vitest
zawiera kilka domyślnych implementacji reporterów, które możesz rozszerzyć.
import { DefaultReporter } from 'vitest/reporters';
export default class MyDefaultReporter extends DefaultReporter {
// do something
}
Oczywiście możesz stworzyć swój reporter od zera. Wystarczy rozszerzyć klasę BaseReporter
i zaimplementować potrzebne metody.
A oto przykład niestandardowego reportera:
import { BaseReporter } from 'vitest/reporters';
export default class CustomReporter extends BaseReporter {
onCollected() {
const files = this.ctx.state.getFiles(this.watchFilters);
this.reportTestSummary(files);
}
}
Lub zaimplementuj interfejs Reporter
:
import type { Reporter } from 'vitest/node';
export default class CustomReporter implements Reporter {
onCollected() {
// print something
}
}
Następnie możesz użyć swojego niestandardowego reportera w pliku vitest.config.ts
:
import { defineConfig } from 'vitest/config';
import CustomReporter from './custom-reporter.js';
export default defineConfig({
test: {
reporters: [new CustomReporter()],
},
});
Zadania raportowane
Zamiast bezpośrednio używać zadań, które otrzymują reporterzy, zaleca się użycie API zadań raportowanych.
Możesz uzyskać dostęp do tego API, wywołując vitest.state.getReportedEntity(runnerTask)
:
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) {
// zauważ, że wcześniejsza implementacja zadania używa "file" zamiast "module"
const testModule = this.vitest.state.getReportedEntity(
file
) as TestModule;
for (const task of testModule.children) {
// ^?
console.log('finished', task.type, task.fullName);
}
}
}
}
Eksportowane reportery
vitest
zawiera kilka wbudowanych reporterów, które możesz używać od razu.
Wbudowane reportery:
BasicReporter
DefaultReporter
DotReporter
JsonReporter
VerboseReporter
TapReporter
JUnitReporter
TapFlatReporter
HangingProcessReporter
Bazowe reportery abstrakcyjne:
BaseReporter
Interfejsy reporterów:
Reporter