我试图用笑话和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]”行时返回模拟实例
您正在尝试模拟一个类/构造函数,但同时也获得了一个模拟实现的实例。为什么不直接拥有自己的模拟?
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)
}