javascript - Jest ioredis mock - 将模拟绑定到模块
问题描述
在打字稿中,我有以下 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
经验不足以知道模拟导入/要求后跟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 中在线找到。
推荐阅读
- r - 在许多时间点之间创建成对持续时间的向量
- schema.org - 在 MusicEvent 架构中,为什么 Google 无法识别 Person 中的 jobTitle 属性?
- python - Locust:如何指定获取查询参数的获取请求
- sql - 制作一个简单的 SQL 数据透视表
- c# - 在网络方法中读取两个列表
- javascript - 在 Selenium + NodeJS 中以字符串形式在下拉列表中获取当前选择的选项
- vue.js - 如何在Vue中的插槽内设置组件的属性?
- angular - 从 5 到 6 的角度迁移后无法构建 - 找不到模块“打字稿”
- grails - 检查 instanceOf 后的 ClassCastException
- c++11 - 如果我将向量声明为全局变量,那么向量分配在哪里?