【发布时间】:2020-02-27 06:19:58
【问题描述】:
测试是一个带有 Jasmine 的 Angular 2 应用程序。
我有这个功能,它开始与remote DB 同步(仅从 Couchbase 到 PouchDB 的单向)。有些服务基本上订阅了在复制事件中发出的 observable。现在我被要求测试发出的同步状态是否正确,并且由于服务文件的测试覆盖率低,部署被阻止。
所以我用本地pouchdb 数据库和远程couchdb 对象调用startSync。我如何才能测试每个事件侦听器是否发出正确的结果?我试图通过replicate.js的代码,但我也没有任何线索。请问有什么提示吗?
基本上我想在模拟/生成“错误”事件时测试发出的状态是否为“假”。
@Injectable()
export class SyncingService {
private subscription: any;
public syncingState: any = new BehaviorSubject<boolean>(false);
private emitResult(state: boolean) {
this.syncingState.next(state);
}
public startSync(localPouch: any, remoteDB: any, config: any) {
let vm: any = this;
this.subscription = localPouch.replicate
.from(remoteDB, { live: true, retry: true })
.on("paused", err => {
vm.emitResult(false);
})
.on("active", info => {
vm.emitResult(false);
})
.on("change", change => {
vm.emitResult(true);
})
.on("error", error => {
vm.emitResult(false);
});
}
}
【问题讨论】: