我有NestJS应用程序与ioredis模块.我需要为使用Redis服务的服务创建测试(代码如下)。随着测试的开始,我的项目也开始了。但是在其他没有Redis服务的测试中,我的项目只进行了启动和运行测试。
也许我的Redis服务是错误的?如果我删除这个代码this.client = new Redis.Cluster(hosts, {...})
我的测试运行witout所有项目。我试着使用ioredis-mock,但它没有工作。
import * as Redis from 'ioredis';
import { Injectable, Logger } from '@nestjs/common';
import {
REDIS_HA_URL,
REDIS_HA_PASSWORD,
REDIS_PORT,
} from '../config/config.service';
@Injectable()
export class RedisService {
private logger = new Logger('Redis Service');
client;
constructor() {
const hosts = REDIS_HA_URL.map(element => ({ host: element, port: REDIS_PORT }));
this.client = new Redis.Cluster(hosts, {
redisOptions: {
reconnectOnError() {
return 2;
},
password: REDIS_HA_PASSWORD,
},
});
this.client.on('error', (error: any) => {
this.logger.error(Redis error ${error});
});
this.client.on('reconnecting', () =>
this.logger.error(Redis reconnecting...),
);
}
}
1条答案
按热度按时间oogrdqng1#
我相信有更好的方法但你没给予我们多少线索...
通过创建您自己的MockedClient对象来进行模拟,该对象将按照您想要的方式进行响应以进行测试,
然后在单元测试文件中,创建一个RedisServiceMock示例,并设置测试模块来使用它。