如何使用玩笑来模拟node-redis

时间:2020-03-05 09:06:19

标签: javascript node.js jestjs node-redis

我正在使用jest,并尝试使用node-redis模拟redis-mock

// redis.js

const redis = require("redis");
const client = redis.createClient({ host: '127.0.0.1', port: 6379 });

// redis.test.js

const redisMock = require("redis-mock");

describe("redis", () => {
  jest.doMock("redis", () => jest.fn(() => redisMock));
  const redis = require("./redis");
});

运行测试时,出现错误

TypeError:redis.createClient不是函数

让我感到在使用jest.doMock()时我做错了事。

非常感谢您的协助。

2 个答案:

答案 0 :(得分:2)

以下对我有用:

import redis from 'redis-mock'
jest.mock('redis', () => redis)

我完全没有在测试中包含redis库,但是我仅将其包含在包含被测试类的文件中。 (具有测试类的文件当然包含在测试文件中。)

答案 1 :(得分:0)

如果您使用的是jest,则模拟和实际实现的切换是possible automatically。非常适合CI。

jest.config.js

module.exports = {
    // other properties...
    setupFilesAfterEnv: ['./jest.setup.redis-mock.js'],
};

jest.setup.redis-mock.js

jest.mock('redis', () => jest.requireActual('redis-mock'));