【问题标题】:pouchdb testing emitted syncing state with mocking remoteDBpouchdb 使用模拟 remoteDB 测试发出的同步状态
【发布时间】: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);
      });
  }
}

【问题讨论】:

    标签: angular jasmine pouchdb


    【解决方案1】:

    我认为您可以执行一些操作,例如将 remoteDB 更改为无效以触发“暂停”并输入“暂停”或“更改”以触发“错误”。即:

        this.subscription = localPouch.replicate
          .from("127.0.0.1", { live: true, retry: true })
          // bad server most likely gets paused with these flags
          .on("paused", err => {
            throw(new Error("oops")); // cause an unrecoverable error instead?
            vm.emitResult(false);
          })
          .on("active", info => {
            vm.emitResult(false);
          })
          .on("change", change => {
            vm.emitResult(true);
    
          })
          .on("error", error => {
            vm.emitResult(false);
          });
      }
    }
    

    通过从另一个 localdb 复制并在复制等待更改时添加到它可能最容易触发活动,如果允许,更新 remoteDB 中的文档也可以工作。

    【讨论】:

      猜你喜欢
      • 2020-01-16
      • 2021-12-28
      • 2017-04-12
      • 2019-07-30
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2018-03-22
      相关资源
      最近更新 更多