【问题标题】:Nest can't resolve dependencies of the Repository MongooseNest 无法解析 Repository Mongoose 的依赖项
【发布时间】:2022-02-01 12:16:14
【问题描述】:

我正在尝试为我的 Nestjs 项目编写一个简单的测试,但我一直无法让它工作。

错误信息

Nest 无法解析 UserRepository (?) 的依赖关系。请确保索引 [0] 处的参数 UserModel 在 RootTestModule 上下文中可用。

可能的解决方案:

  • 如果 UserModel 是提供者,它是当前 RootTestModule 的一部分吗?
  • 如果 UserModel 是从单独的 @Module 导出的,那么该模块是否会导入到 RootTestModule 中? @Module({imports: [ /* 包含 UserModel 的模块 */ ]})

user.service.spec.ts

beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      imports: [MongooseModule.forRoot(process.env.MONGO_URI)],
      providers: [
        UserService,
        UserRepository,
        {
          provide: User.name,
          useValue: MongooseModule.forFeature([
            { name: User.name, schema: UserSchema },
          ]),
        },
      ],
    }).compile();

    userService = module.get<UserService>(UserService);
  });

user.service.ts

@Injectable()
export class UserService {
  constructor(private readonly userRepository: UserRepository) {}
}

user.repository.ts

@Injectable()
export class UserRepository {
  constructor(@InjectModel(User.name) private userModel: Model<UserDocument>) {}
}

【问题讨论】:

    标签: node.js typescript mongoose nestjs


    【解决方案1】:

    @InjectModel(User.name)@Inject(User.name) 不同,这就是为什么您不能使用 provide: User.name 并期望它为该提供者找到价值的原因。

    使用provide: getModelToken(User.name)

    下次阅读文档,请:https://docs.nestjs.com/techniques/mongodb#testing

    此外,您还可以在此处探索大量其他测试示例:https://github.com/jmcdo29/testing-nestjs

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      • 2021-01-28
      • 2021-11-24
      • 2019-01-21
      相关资源
      最近更新 更多