【问题标题】:Jest ioredis mock - Bind mock to moduleJest ioredis mock - 将模拟绑定到模块
【发布时间】:2023-03-14 12:41:02
【问题描述】:

在打字稿中,我有以下 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

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

【问题讨论】:

标签: javascript unit-testing jestjs ioredis


【解决方案1】:

基于es-6-class-mocks,我找到了一种可行的方法,在类上模拟构造函数。

var IoRedis = require('ioredis-mock');
var ioRedis = new IoRedis({
    data: {
        cacheKey: cacheData
    },
});
jest.mock('ioredis', () => {
    return function () {
        return ioRedis
    };
});

这个 sn-p 可用于模拟 ioredis,我在文档或 Stackoverflow 中都无法在线找到它。

【讨论】:

  • 您能否提供完整的示例,说明您如何使用 oioredis 和 jest 实现测试?
  • 遗憾的是,这是一个我不再参与的项目的 sn-p。
猜你喜欢
  • 2021-10-11
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 2021-02-04
  • 2017-02-23
相关资源
最近更新 更多