如何使用Jest在Redux-Saga中测试RxDB?

时间:2019-01-11 09:44:57

标签: rxjs jestjs redux-saga

我正在尝试通过Jest测试涵盖从RxDB获取数据的redux-saga。

export function* checkUnsavedData(action) {
  const { tab } = action;
  try {
    const db = yield getDB().catch(e => {
      throw new Error(e);
    });

    const currentUser = yield select(makeSelectCurrentUser());

    const unsavedData = yield db[USER_COLLECTION].findOne(currentUser)
      .exec()
      .then(data => data && data.unsavedData)
      .catch(e => {
        throw new Error(e);
      });
  } catch (error) {
    yield showError(error);
  }
}

在实时运行中一切都很好。但是测试我得到的发电机:

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Error: RxError:
RxDatabase.create(): Adapter not added. Use RxDB.plugin(require('pouchdb-adapter-[adaptername]');
Given parameters: {
adapter:"idb"}

如果有人这样做,请告诉我如何在Jest的redux-saga中使用RxDB测试此类情况。

1 个答案:

答案 0 :(得分:1)

似乎您没有将适配器添加到RxDB。您可以将代码粘贴到创建数据库的位置吗?这将有助于发现错误。

运行测试时,不应使用idb-adapter。使用in-memory-adapter,它更快,而且您可以确保在每次测试运行时都从干净状态开始。