问题描述
我已经设置了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);
});