为控制器编写单元测试时,Nest无法解析我的Mongoose模型依赖项:
嵌套无法解析UsersService(?)的依赖项。请做出来 确保索引[0]处的参数USER_MODEL在 _RootTestModule上下文。
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中:
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模型,但是返回了相同的错误。
有人可以帮我吗?
答案 0 :(得分:1)
如果您使用的是@Inject(USER_MODEL)
,则需要在测试中使用provide: USER_MODEL
。如果您使用getModelToken
而不是原始的@InjectModel()
,则@Inject()
实用程序方法是必需的。