Справочная информация
Когда я тестирую сервис, для которого в конструкторе требуется один параметр, я должен инициализировать сервис как провайдер, используя объект, а не просто передавать сервис как провайдер:
auth.service.ts (пример)
@Injectable()
export class AuthService {
constructor(
@InjectRepository(Admin)
private readonly adminRepository: Repository<Admin>,
) { }
// ...
}
auth.service.spec.ts (пример)
describe('AuthService', () => {
let authService: AuthService
beforeEach(async () => {
const module = await Test.createTestingModule({
providers: [
AuthService,
{
provide: getRepositoryToken(Admin),
useValue: mockRepository,
},
],
}).compile()
authService = module.get<AuthService>(AuthService)
})
// ...
})
См. эту проблему на GitHub для получения источника этого объяснения.
Моя проблема
У меня есть служба, для которой в конструкторе требуются 2 параметра:
auth.service.ts
@Injectable()
export class AuthService {
constructor(
private readonly jwtService: JwtService,
private readonly authHelper: AuthHelper,
) {}
// ...
}
Как инициализировать эту службу в тестовой среде? Я не могу передать несколько значенийuseValue
в массиве providers
.Мой конструктор AuthService
имеет 2 параметра, и мне нужно передать их оба, чтобы тест работал.
Вот мои текущие (не работающие) настройки:
auth.service.spec.ts
describe('AuthService', () => {
let service: AuthService
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [AuthService],
}).compile()
service = module.get<AuthService>(AuthService)
})
it('should be defined', () => {
expect(service).toBeDefined()
})
// ...
})
Когда я не передаю их, я получаю следующую ошибку:
● AuthService › should be defined
Nest can't resolve dependencies of the AuthService (?, AuthHelper). Please make sure that the argument at index [0] is available in the TestModule context.