如何使用 jest 模拟 node-redis

Mr.*_*Mr. 1 javascript node.js node-redis jestjs

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

// 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");
});
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,出现错误

类型错误:redis.createClient 不是函数

我觉得我在使用时做错了什么jest.doMock()

感谢您的帮助。

Ada*_*Eri 12

如果您使用jest ,则可以自动切换模拟和实际实现。非常适合 CI。

jest.config.js

module.exports = {
    // other properties...
    setupFilesAfterEnv: ['./jest.setup.redis-mock.js'],
};
Run Code Online (Sandbox Code Playgroud)

jest.setup.redis-mock.js

jest.mock('redis', () => jest.requireActual('redis-mock'));
Run Code Online (Sandbox Code Playgroud)


Jan*_*ner 5

以下对我有用:

import redis from 'redis-mock'
jest.mock('redis', () => redis)
Run Code Online (Sandbox Code Playgroud)

我根本不将redis库包含在测试中,但我只将它包含在包含测试类的文件中。(当然,带有测试类的文件包含在测试文件中。)

  • 你能给我一个示例代码吗? (2认同)