You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:35:14