首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jest ioredis模拟-将模拟绑定到模块

Jest ioredis模拟-将模拟绑定到模块
EN

Stack Overflow用户
提问于 2021-05-01 13:28:30
回答 2查看 2.7K关注 0票数 0

在类型记录中,我有下面的IoRedis实例化。

代码语言:javascript
复制
import IoRedis from "ioredis";

const redis = new IoRedis({
    ...
});

在测试类中以下列方式进行嘲弄时。决定和ioredis-mock一起解决这个问题。

代码语言:javascript
复制
var IoRedis = require('ioredis-mock');
var ioRedis = new IoRedis({
    data: {
        ...
    },
});
jest.mock('ioredis', ioRedis);

这会导致一个错误。

代码语言:javascript
复制
TypeError: this._mockFactories.get(...) is not a function

我尝试过模拟ioredis的替代调用,但是很难将模拟的测试版本绑定到代码中正在解析的那个版本。主要而言,我认为new IoRedis是罪魁祸首,但我的javascript经验不足以知道用哪种方式来模拟导入/需求,然后是new关键字。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-01 18:24:54

基于ES-6级模拟,我发现了一种可以在类上模拟构造函数的方法。

代码语言:javascript
复制
var IoRedis = require('ioredis-mock');
var ioRedis = new IoRedis({
    data: {
        cacheKey: cacheData
    },
});
jest.mock('ioredis', () => {
    return function () {
        return ioRedis
    };
});

这个片段可以用来模拟ioredis,我在文档或Stackoverflow中都找不到它。

票数 0
EN

Stack Overflow用户

发布于 2022-08-22 11:58:03

我在用:

代码语言:javascript
复制
const RedisMock = require('ioredis-mock');
jest.mock('ioredis', () => jest.requireActual('ioredis-mock'));

const redis = new RedisMock({
            port: <same as in production>,
            host : <same as in production>,
            data: { 'Key:1': [JSON.stringify({"state":"INITIAL","recordingError":null})] ,
                    'Key:2': [JSON.stringify({"JSONVersionId":"1.0","agentTack":"11ebd1d4})] ,
       }
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67346824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档