Estensione dei Reporter
WARNING
Questa è un'API avanzata. Se desideri solo configurare i reporter integrati, consulta la guida sui "Reporter".
È possibile importare i reporter da vitest/reporters
ed estenderli per creare i propri reporter personalizzati.
Estensione dei Reporter Integrati
In generale, non è necessario creare un reporter da zero. vitest
include diversi programmi di reporting predefiniti che è possibile estendere.
import { DefaultReporter } from 'vitest/reporters';
export default class MyDefaultReporter extends DefaultReporter {
// esegui un'operazione
}
In alternativa, è possibile creare il proprio reporter da zero. È sufficiente estendere la classe BaseReporter
e implementare i metodi necessari.
Di seguito è riportato un esempio di reporter personalizzato:
import { BaseReporter } from 'vitest/reporters';
export default class CustomReporter extends BaseReporter {
onCollected() {
const files = this.ctx.state.getFiles(this.watchFilters);
this.reportTestSummary(files);
}
}
Oppure implementare l'interfaccia Reporter
:
import type { Reporter } from 'vitest/node';
export default class CustomReporter implements Reporter {
onCollected() {
// stampa un messaggio
}
}
È quindi possibile utilizzare il proprio reporter personalizzato nel file vitest.config.ts
:
import { defineConfig } from 'vitest/config';
import CustomReporter from './custom-reporter.js';
export default defineConfig({
test: {
reporters: [new CustomReporter()],
},
});
Task Riportati
Anziché utilizzare i task ricevuti direttamente dai reporter, è consigliato impiegare l'API dei Task Riportati.
È possibile accedere a questa API chiamando 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) {
// si noti che la vecchia implementazione del task utilizza "file" anziché "module"
const testModule = this.vitest.state.getReportedEntity(
file
) as TestModule;
for (const task of testModule.children) {
// ^?
console.log('finished', task.type, task.fullName);
}
}
}
}
Reporter Esportati
vitest
include alcuni reporter integrati che è possibile utilizzare immediatamente.
Reporter Integrati:
BasicReporter
DefaultReporter
DotReporter
JsonReporter
VerboseReporter
TapReporter
JUnitReporter
TapFlatReporter
HangingProcessReporter
Reporter Astratti di Base:
BaseReporter
Interfacce Reporter:
Reporter