我正在为我的应用程序寻求单元测试方面的帮助,我使用的是indexedDB。在我实现indexedDB功能之前,测试是正确的。但现在,对于所有这些,我看到一个错误:
ReferenceError: indexedDB is not defined有人能给我一个建议如何摆脱这个错误吗?我在搜索信息,并尝试了不同的方法来模拟window或indexedDB,但没有结果。
发布于 2018-02-12 23:54:03
该问题是由于Dexie期望定义window.indexedDB造成的,但在没有真正的DOM或window作用域的无头模式(使用Jest)下运行时,情况并非如此。
在Dexie git问题中找到了一个解决方案,它表明:
const Dexie = require('dexie')
Dexie.dependencies.indexedDB = require('fake-indexeddb')
Dexie.dependencies.IDBKeyRange = require('fake-indexeddb/lib/FDBKeyRange')我们在以下方面也取得了成功:
import Dexie from 'dexie';
import indexedDB from 'fake-indexeddb';
Dexie.dependencies.indexedDB = indexedDB;链接到原始问题:https://github.com/dfahlander/Dexie.js/issues/495
或者根据文档,可以提供indexedDB选项,如下所示:
import Dexie from 'dexie';
import indexedDB from 'fake-indexeddb';
var db = new Dexie("MyDatabase", { indexedDB: indexedDB });文档链接:http://dexie.org/docs/Dexie/Dexie
发布于 2019-01-11 02:33:13
如果你正在使用jest和酶来测试索引数据库,或者你正在使用dexie,这是一个同样用于实现test.js应用编程接口的indexdb包装器,你只需要在你的indexDB -test.js文件中添加这三行。
const Dexie = require('dexie');
Dexie.dependencies.indexedDB = require('fake-indexeddb');
Dexie.dependencies.IDBKeyRange = require('fake-indexeddb/lib/FDBKeyRange');现在你必须将这个文件提供给jest,证明它可以使用伪索引而不是原始的indexDB。
setupFiles: ['<rootDir>/src/test/globals-test.ts']发布于 2019-10-11 00:15:08
我没有使用Dexie (而是在Firebase在导入时抛出异常时出现在这里),修复方法只是将require('fake-indexeddb/auto')添加到setupTests.ts中,以便Jest拾取。
https://stackoverflow.com/questions/47934383
复制相似问题