我试图用笑话和javascript来模拟redis,当我访问redis.mock.instance[0]时它总是空的

问题描述 投票:0回答:1

我试图用笑话和javascript来模拟redis,当我访问redis.mock.instance[0]时它总是空的

RedisWrapper.js: `

const Redis = require('ioredis');
const REDIS_USER_TTL = 604800;

class RedisWrapper {
    constructor(host = 'redis', port = 6379, db = 3) {
        this.redis = new Redis({host: host, port: port, db: db})
    }

    async get(key) {
        return this.redis.get(key)
    }

    async set(key, data) {
        this.redis.set(key, data)
    }
}

module.exports = RedisWrapper

ethermail_paywall.spec.js: `

const {validateEmailWeb2} = require("../../plugins/ethermail_paywall");
const {PaywallConfigurationEnum} = require("../../enums/paywallEnum");
const RedisWrapper = require("../../helpers/redis-wrapper");

jest.mock("../../helpers/redis-wrapper")

test('receiver with configuration: FILTER_HIGH_SECURITY_DOMAINS', async () => {

    const userReceiver = {
        config_web2: PaywallConfigurationEnum.FILTER_HIGH_SECURITY_DOMAINS,
        address: '0x261d37e08dc152e8b040bfff6278449910825f2b'
    }
    const domainSender = 'gmail'
    const prefix = 'paywall_domain_'

    `const redisInstance = RedisWrapper.mock.instances[0]`
    const mockMongodb = jest.fn()


expect(await validateEmailWeb2(userReceiver, userReceiver.address, domainSender, mockMongodb, RedisWrapper, prefix)).toBe(true)

``

当我执行这行代码时,它返回空并且应该为我带来一个模拟实例:

const redisInstance = RedisWrapper.mock.instances[0]

尝试以不同的方式导出类,例如导出默认值,但这给我一个错误,指出令牌无法识别。

我想实现它在通过“const redisInstance = RedisWrapper.mock.instances[0]”行时返回模拟实例

javascript node.js redis jestjs mocking
1个回答
0
投票

您正在尝试模拟一个类/构造函数,但同时也获得了一个模拟实现的实例。为什么不直接拥有自己的模拟?

test('receiver with configuration: FILTER_HIGH_SECURITY_DOMAINS', async () => {
   /*
  your other mocks
*/
  const redisInstanceMock = {
    get: jest.fn().mockResolvedValue("value you want to be returned on get"),
    set: jest.fn().mockResolvedValue(),
  }

  const result = await validateEmailWeb2(userReceiver, userReceiver.address, domainSender, mockMongodb, redisInstance, prefix)
  expect(result).toBe(true)
}
© www.soinside.com 2019 - 2024. All rights reserved.