Saltar al contenido

Pruebe si una promesa se resuelve o rechaza con Jasmine en Nodejs

Solución:

Para probar el código asíncrono con jasmine, debe usar su sintaxis asíncrona, por ejemplo:

describe('test promise with jasmine', function(done) {
    var promise = getRejectedPromise();

    promise.then(function() {
      // Promise is resolved
      done(new Error('Promise should not be resolved'));
    }, function(reason) {
      // Promise is rejected
      // You could check rejection reason if you want to
      done(); // Success
    });
});

ahora puedes usar expectAsync()

Esperando éxito:

it('expect result', async () => {
   ...
   await expectAsync(someAsyncFunction(goodInput)).toBeResolved(expectedResponse)
})

Esperando fracaso:

it('expect result', async () => {
   ...
   await expectAsync(someAsyncFunction(badInput)).toBeRejectedWith(expectedResponse)
})

jasmine 2.7 en adelante admite la devolución de promesas, y se probaría su estado cumplido.

Para probar el rechazo:

it('test promise with jasmine', async () => {
    try {
        await getRejectedPromise();
    } catch (err) {
        return;
    }

    throw new Error('Promise should not be resolved');
});

o todavía:

it('test promise with jasmine', async () => {
    await getRejectedPromise()
        .then(
            () => Promise.reject(new Error('Promise should not be resolved')), 
            () => {});
});

Para verificar el mensaje real, además de lo habitual instanceof/toBe(), colocar dentro del catch:

expect(() => { throw err }).toThrow(new MyCustomError('Custom error message'));

El beneficio de este enfoque es tener un mensaje de error más agradable en la salida de la prueba.

Se esperaba que la función arrojara MyCustomError: mensaje de error personalizado, pero arrojó otro mensaje de error.

Algo mejor que la salida habitual.

Para probarlo resuelto (no puede ser más simple):

it('test promise with jasmine', async () => {
    await getRejectedPromise();
});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *