Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

169
Vistas
Cómo probar la promesa con probar y atrapar una función como este ejemplo

No puedo probar el rechazo por alguna razón. Aquí está la función y quiero probarla al 100%. ahora es como el 92% y se queja de que el rechazo (e) no se prueba.

 public resolve(): Promise<{ [key: string]: boolean }> { return new Promise<{ [key: string]: boolean }>(async (resolve, reject) => { try { for await (const setting of settings) { // ObjectStore that acts like hashMap this.store.set(setting.key, setting.value); } resolve(); } catch (e) { reject(e); } }); }

Actualizaciones:

Tengo que hacer otro simulacro para que la declaración de captura suceda primero. Y TestBed.overrideProvider realmente no funciona para mí, así que tengo que

 it('should return a rejected promise', async() => { TestBed.resetTestingModule(); TestBed.configureTestingModule({ //inserting the new mock provider to trigger the catch ... });

y luego use la respuesta a continuación (Gracias @Apoorva Chikara) y funciona para mí

Si hay una manera más fácil de lograr esto, por favor hágamelo saber

Aquí está mi código actualizado para probar.

 it('should return a rejected promise', async() => { TestBed.resetTestingModule(); TestBed.configureTestingModule({ providers: [ { provide: ObjectStore, useValue: new ObjectStore('test'), }, { // Making this client invalid to trigger catch and throw error // I think writing a mock class to throw error also can be done // this is the "settings" from azure listConfigurationSettings provide: AppConfigurationClient, useValue: {}, } ] }); service = TestBed.inject(FeatureFlagResolver); store = TestBed.inject(ObjectStore); const rejection = async () => { await service.resolve().catch(); } await expect(rejection()).rejects.toThrow(); });

La "configuración" es listConfigurationSettings de MS azure. solíamos leer desde Azure para los ajustes de configuración. Por ejemplo, queremos habilitar ciertas cosas en el sitio de Angular, podemos ir a Azure Portal para cambiar la configuración de la aplicación ("chatbot", 'on'), para que el chatbot esté en la página. Solo configuración de la aplicación que las personas pueden activar o desactivar por ahora.

Lo siento, debería haber incluido más información en primer lugar.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¡ Nunca pase una async function como ejecutora de new Promise ! Su función debe simplificarse a

 public async resolve(): Promise<{ [key: string]: boolean }> { // ^^^^^ for await (const setting of settings) { // ObjectStore that acts like hashMap this.store.set(setting.key, setting.value); } }

y luego no necesitará una prueba separada para la ruta del código que ni siquiera existe.

Además, probablemente no quiera usar for await , a menos que la settings sea un generador asíncrono. Dados los detalles actualizados, en realidad es un PagedAsyncIterableIterator . Sin embargo, recomendaría no almacenar eso en una variable global, sino hacer la iteración en la misma función donde se realiza la llamada .listConfigurationSettings() .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede detectar el error y probarlo. Es similar a probar la resolución.

 describe('Test Case', () => { describe('Testing Sample 1', () => { it('should return a rejected promise', () => { service.resolve() .catch((error) => { expect(error).toEqual('the error string'); }); }); }); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda