Jest ioredis mock - 将模拟绑定到模块
Jest ioredis mock - Bind mock to module
在打字稿中,我有以下 IoRedis 实例。
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
我尝试了对 mock ioredis
的替代调用,但很难将 mock 的测试版本绑定到我的代码中解析的版本。主要是我认为 new IoRedis
是罪魁祸首,但我的 javascript
经验不足以知道哪种方式可以模拟 import/require 后跟 new
关键字。
基于 es-6-class-mocks,我找到了一种有效的方法,在 class 上模拟构造函数。
var IoRedis = require('ioredis-mock');
var ioRedis = new IoRedis({
data: {
cacheKey: cacheData
},
});
jest.mock('ioredis', () => {
return function () {
return ioRedis
};
});
此代码段可用于模拟 ioredis
,我无法在文档或 Whosebug 中在线找到它。
在打字稿中,我有以下 IoRedis 实例。
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
我尝试了对 mock ioredis
的替代调用,但很难将 mock 的测试版本绑定到我的代码中解析的版本。主要是我认为 new IoRedis
是罪魁祸首,但我的 javascript
经验不足以知道哪种方式可以模拟 import/require 后跟 new
关键字。
基于 es-6-class-mocks,我找到了一种有效的方法,在 class 上模拟构造函数。
var IoRedis = require('ioredis-mock');
var ioRedis = new IoRedis({
data: {
cacheKey: cacheData
},
});
jest.mock('ioredis', () => {
return function () {
return ioRedis
};
});
此代码段可用于模拟 ioredis
,我无法在文档或 Whosebug 中在线找到它。