如何解决使用@Injectable Scope / @InjectREQUESTNestJS测试类
我已经设置了MongooseConfigService,以允许我们动态切换某些请求的连接字符串,并试图正确设置测试。
@Injectable({scope: Scope.REQUEST})
export class MongooseConfigService implements MongooseOptionsFactory {
constructor(
@Inject(REQUEST) private readonly request: Request) {
}
但是我无法向测试环境提供request
。
let service: Promise<MongooseConfigService>;
beforeEach(async () => {
const req = new JestRequest();
const module: TestingModule = await Test.createTestingModule({
providers: [
MongooseConfigService,{
provide: getModelToken(REQUEST),inject: [REQUEST],useFactory: () => ({
request: req,}),},],}).compile();
service = module.resolve<MongooseConfigService>(MongooseConfigService);
});
据我所知,在没有inject
且有/没有useValue
的情况下进行了尝试,但是this.request
在尝试运行测试时仍未定义。
TIA
解决方法
也许尝试仅使用import:[appModule]实例化测试模块,然后尝试获取服务。另外,请尝试使用overrideprovider和usevalue,如下所示:
let service: Promise<MongooseConfigService>;
beforeEach(async () => {
const req = new JestRequest();
const module: TestingModule = await Test.createTestingModule({
imports: [appModule]
}).overrideProvider(REQUEST)
.useValue(req)
.compile();
service = module.resolve<MongooseConfigService>(MongooseConfigService);
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。