gpt4 book ai didi

node.js - Nest.js 无法解决单元测试中的 Mongoose 模型依赖性

转载 作者:行者123 更新时间:2023-12-04 01:36:14 31 4
gpt4 key购买 nike

在为 Controller 编写单元测试时,Nest 无法解析我的 Mongoose 模型依赖性:

Nest can't resolve dependencies of the UsersService (?). Please make sure that the argument USER_MODEL at index [0] is available in the _RootTestModule context.

Potential solutions:
- If USER_MODEL is a provider, is it part of the current _RootTestModule?
- If USER_MODEL is exported from a separate @Module, is that module imported within _RootTestModule?
@Module({
imports: [ /* the Module containing USER_MODEL */ ]
})

我的模型是通过 users.service.ts 中的服务构造函数注入(inject)的:

import { IUserModel } from './interfaces';
import { Model } from 'mongoose';
import { USER_MODEL } from './constants/users.constants';

@Injectable()
export class UsersService {

constructor (
@Inject(USER_MODEL)
private readonly userModel: Model<IUserModel>,
) {}

...
}

我的测试定义为:

const mockUserModel = {};

describe('Users Controller', () => {
let usersController: UsersController;
let usersService: UsersService;

beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [UsersController],
providers: [
{
provide: getModelToken(USER_MODEL),
useValue: mockUserModel,
},
UsersService,
],
}).compile();

usersController = module.get<UsersController>(UsersController);
usersService = module.get<UsersService>(UsersService);
});

it('should define user controller and service', () => {
expect(usersController).toBeDefined();
expect(usersService).toBeDefined();
});
});

所有这些类都定义在同一个模块中。我不太确定 Nest 在寻找什么。我正在按照指南进行操作:https://docs.nestjs.com/fundamentals/testing并查看了几个较旧的 Github 问题。

我还尝试创建一个自定义类提供程序,如下所定义:https://docs.nestjs.com/fundamentals/custom-providers提供类型化的 Mongoose 模型,但返回相同的错误。

谁能帮帮我?

最佳答案

如果您使用@Inject(USER_MODEL),那么您需要在测试中使用provide: USER_MODEL。如果您使用 @InjectModel() 而不是原始的 @Inject(),则 getModelToken 实用方法是必需的。

关于node.js - Nest.js 无法解决单元测试中的 Mongoose 模型依赖性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59449975/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com