首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注射CACHE_MANAGER的NestJs测试

注射CACHE_MANAGER的NestJs测试
EN

Stack Overflow用户
提问于 2021-12-25 19:28:46
回答 3查看 3.6K关注 0票数 2

我有一些服务在构造函数中注入CACHE_MANAGER

代码语言:javascript
复制
import { CACHE_MANAGER, Inject, Injectable } from '@nestjs/common';
import { Cache } from 'cache-manager';
...
export class ManagerService {
   constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {}
   ...
}

这使我在测试导入这些服务的模块时出错。

Nest can't resolve dependencies of the ManagerService (?). Please make sure that the argument CACHE_MANAGER at index [0] is available in the Web3ManagerService context.

我对NestJ比较陌生,所以我真的想不出怎么解决这个问题

EN

回答 3

Stack Overflow用户

发布于 2021-12-25 20:10:43

要在CACHE_MANAGER下注入缓存管理器提供程序,需要将创建此提供程序的nestjs模块导入到具有ManagerService的模块中。

代码语言:javascript
复制
@Module({
  imports: [CacheModule.register()], // <<<<
  providers: [ManagerService],
})
export class AppModule {}

就像文档显示的https://docs.nestjs.com/techniques/caching

票数 5
EN

Stack Overflow用户

发布于 2022-10-25 16:16:00

我只是遇到了同样的问题,就这样解决了这个问题:

manager.service.spec.ts

代码语言:javascript
复制
beforeEach(async () => {
  const module: TestingModule = await Test.createTestingModule({
    providers: [ManagerService, { provide: CACHE_MANAGER, useValue: {} }],
  }).compile();

  service = module.get<ManagerService>(ManagerService);
});
票数 1
EN

Stack Overflow用户

发布于 2022-10-07 01:20:02

设置isGlobal: true

代码语言:javascript
复制
CacheModule.register({
    url: process.env.REDIS_URL,
    db: 0,
    port: parseInt(process.env.REDIS_PORT),
    password: process.env.REDIS_PASSWORD,
    isGlobal: true, //<<<<<<<
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70482273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档