簡體   English   中英

如何使用 jest 模擬 node-redis

[英]how to mock node-redis using jest

我正在使用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");
});

當我運行測試時,出現錯誤

類型錯誤:redis.createClient 不是函數

我覺得我在使用jest.doMock()時做錯了什么。

感謝您的幫助。

以下對我有用:

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

我根本沒有在測試中包含redis庫,但我只將它包含在包含測試類的文件中。 (當然,帶有測試類的文件包含在測試文件中。)

如果您使用的是jest ,則可以自動切換模擬和實際實現。 非常適合 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'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM