import { Reporter, ReportItemWithContext, Transport, Collector } from '..'; import { sleep } from '../../../../tests/shared'; export class TestReporter extends Reporter> {} export class TestCollector extends Collector, Reporter> { public reporter?: Reporter>; } export class TestTransport extends Transport, Reporter> { /** 待消费上报项(测试用) */ recordsToConsume: ReportItemWithContext>[] = []; /** 取得当前待消费上报项(测试用) */ consume() { const records = [...this.recordsToConsume]; this.recordsToConsume = []; return records; } send(records: ReportItemWithContext>[]) { this.recordsToConsume.push(...records); } } export class TestAwaitedTransport extends TestTransport { constructor(protected timeout = 1000) { super(); } async send(records: ReportItemWithContext>[]) { await sleep(this.timeout); this.recordsToConsume.push(...records); } }