Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

335
Visualizações
TypeError: no se puede leer la propiedad 'entonces' de Jest y Nest indefinidos

Estoy tratando de escribir una prueba de unidad para mi API de NestJS, pero obtengo este TypeError: Cannot read property 'then' of undefined cuando intento simular un método en mi clase de servicio. ¿Podría por favor explicar lo que está mal con mi código?

servicio:

 async userExist(data: User): Promise<boolean> { return new Promise((resolve, reject) => { this.usereRepository .findOne({ where: { name: data.name, }, }) .then((res) => { if (!res) { resolve(false); } resolve(true); }) .catch((err) => { reject(err); }); }); } async createUser(data: User): Promise<User> { return new Promise((resolve, reject) => { this.userExist(data).then((exist) => { if (exist) { return reject('User already exist'); } this.userRepository .save(data) .then((res) => { resolve(res); }) .catch((err) => { reject(err); }); }); }); }

servicio.prueba:

 it('should create a new user without error', async () => { jest .spyOn(service, 'userExist') .mockImplementation(() => Promise.resolve(false)); await service.createUser(data); expect(userRepository.save).toHaveBeenCalled(); });

No sé si esto es útil, pero puse beforeEach donde me burlo de mis funciones de base de datos save y findOne .

 let service: UserService; let userRepository: Repository<User>; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ UserService, { provide: getRepositoryToken(User), useValue: { save: jest.fn(), findOne: jest.fn(), }, }, ], }).compile(); service = module.get<UserService>(UserService); userRepository = module.get<Repository<User>>( getRepositoryToken(User) ); });

seguimiento de errores

 TypeError: Cannot read property 'then' of undefined 64 | if (exist) { 65 | return reject('User already exist'); > 66 | } | ^ 67 | this.userRepository 68 | .save(data) 69 | .then((res) => {
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Esto se debe a que save() no es una función asíncrona. Cámbiela por esto:

 { provide: getRepositoryToken(User), useValue: { save: jest.fn().mockResolvedValue('user_object'), findOne:jest.fn().mockResolvedValue('user_object'), }, },
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda