问题描述
import IoRedis from "ioredis";
const redis = new IoRedis({
...
});
通过以下方式在测试类中进行模拟。决定用ioredis-mock
来解决这个问题。
var IoRedis = require('ioredis-mock');
var ioRedis = new IoRedis({
data: {
...
},});
jest.mock('ioredis',ioRedis);
这会导致错误。
TypeError: this._mockFactories.get(...) is not a function
我尝试了其他调用来模拟 ioredis
,但是很难将模拟的测试版本绑定到我的代码中正在解析的版本。主要是我认为 new IoRedis
是罪魁祸首,但我的 javascript
经验不足以知道以哪种方式模拟导入/要求后跟 new
关键字。
解决方法
基于 es-6-class-mocks,我找到了一种有效的方法,在类上模拟构造函数。
var IoRedis = require('ioredis-mock');
var ioRedis = new IoRedis({
data: {
cacheKey: cacheData
},});
jest.mock('ioredis',() => {
return function () {
return ioRedis
};
});
此代码段可用于模拟 ioredis
,我在文档或 Stackoverflow 中都找不到它。