При написании модульного теста для контроллера Nest не может разрешить мою зависимость модели Mongoose:
Nest не может разрешить зависимости UsersService (?). Убедитесь, что аргумент USER_MODEL по индексу [0] доступен в контексте _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();
});
});
Все эти классы определены в одном модуле. Я не совсем уверен, что ищет Гнездо. Я следую руководству по адресу: https://docs.nestjs.com/fundamentals/testing и также рассмотрел несколько старых проблем с Github.
Я также попытался создать провайдера пользовательского класса, как определено здесь: https://docs.nestjs.com/fundamentals/custom-providers предоставить типизированную модель Mongoose, но с той же ошибкой.
Кто-нибудь может мне помочь?