如何在NetJS测试中获取通过注入键注入的Provider
在NestJS测试中访问通过注入键注入的Provider
直接调用moduleRef.get()方法,传入你的注入键SOME_PROVIDER就能获取到对应的实例。
完整代码示例
import { Test } from '@nestjs/testing'; // 替换成你的实际文件路径 import { SOME_PROVIDER, myProvider, SomeWrappedInstance } from './your-module'; describe('测试注入的Provider', () => { let moduleRef; let injectedInstance; beforeEach(async () => { moduleRef = await Test.createTestingModule({ providers: [myProvider], }).compile(); // 通过注入键获取实例 injectedInstance = moduleRef.get(SOME_PROVIDER); }); it('应该成功获取到注入的Provider实例', () => { expect(injectedInstance).toBeDefined(); // 如果你的useFactory固定返回SomeWrappedInstance,可以做这个断言 expect(injectedInstance).toBe(SomeWrappedInstance); }); });
注意事项
- 确保
SOME_PROVIDER注入令牌在测试文件中正确导入,避免令牌不匹配导致获取失败。 - 如果你的
useFactory是异步返回Promise的,只需确保模块编译完成后调用get即可,无需额外处理(Test.createTestingModule().compile()本身会等待异步初始化完成)。
内容的提问来源于stack exchange,提问作者user17714968
相关产品推荐
相关产品推荐

