Попытка юнит-теста.
Получил следующую ошибку:
TypeError: Невозможно прочитать свойство 'prototype' из неопределенного
класс экспорта UserService {
конструктор (@InjectRepository (User) private readonly userRepository:
Репозиторий <Пользователь>) {}
spec.ts:
describe('AuthController', () => {
let authController: AuthController;
let authService: AuthService;
let mockRepository = {
};
beforeEach(async () => {
const module = await Test.createTestingModule({
imports: [
TypeOrmModule.forFeature([User]),
],
controllers: [AuthController],
providers: [AuthService, {
provide: getRepositoryToken(User),
useValue: mockRepository
}]
}).compile()
authService = module.get<AuthService>(AuthService);
authController = module.get<AuthController>(AuthController)
});
Может кто-нибудь поделиться решением, пожалуйста?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ :
Похоже, что-то не так с typeorm
beforeEach(async () => {
const module = await Test.createTestingModule({
}).compile()
authService = module.get<AuthService>(AuthService);
authController = module.get<AuthController>(AuthController)
});
С этим кодом я получаю точно такую же ошибку. Поэтому единственная проблема заключается в добавлении typeorm
к этому тестовому модулю.
Поэтому происходит сбой из-за зависимости: AuthController-> AuthService-> UserService-> TypeORM
Кстати, только что проверил UserService
, используя API с Почтальоном, и он отлично работает.
По-прежнему нет результата:
module = await Test.createTestingModule({
controllers: [AuthController],
components: [
{
provide: AuthService,
useValue: {}
},
{
provide: UserService,
useValue: {}
},
{
provide: getRepositoryToken(User),
useValue: {}
}
],
providers: [
{
provide: AuthService,
useValue: {}
},
{
provide: UserService,
useValue: {}
},
{
provide: getRepositoryToken(User),
useValue: {}
}
]
}).compile()
this.authController = module.get<AuthController>(AuthController)
Также
class AuthServiceMock {
logIn(userName) {
return { id:100, isDeleted:false, login:"login", password:"password"};
}
signUp() {
return { expireIn: 3600, token:"token" };
}
}
describe('AuthController', () => {
let module: TestingModule;
let authController: AuthController;
let authService: AuthService;
beforeEach(async () => {
module = await Test.createTestingModule({
controllers: [AuthController],
components: [
],
providers: [
{
provide: AuthService,
useClass: AuthServiceMock
},
]
}).compile()
this.authController = module.get<AuthController>(AuthController)
});