Anuncios

Bienvenidos sean a este post, hoy veremos otra opcion de jest.

Anuncios

Ya hemos visto en los posts anteriores no solo algunas opciones que disponemos para nuestros test sino tambien algunas condiciones. Pero una que se puede repetir mas a menudo que otras es la necesidad de asegurarnos que una funcion sea llamada, o llamada con los parametros correctos. Y esta situacion se puede dar mas concretamente cuando una funcion debe llamar a una serie de funciones para verificar una logica de negocios y para asegurarnos esto utilizamos a jest mocks.

Anuncios

Para aplicarlo necesitaremos el proyecto que creamos en este post, sino lo poseen les dejo un link para descargarlo:

Anuncios

Simplemente extraigan el directorio en el PC y ya esta listo para ser utilizado. Nuestro primer paso sera ir al hola.spec.ts y modificaremos el codigo existente por el siguiente:

class MiCallback {
        callback(valor: string,
        fn: (v: string) => null)
        {
                console.log("callback invocando a fn");
                return fn(valor);
        }
}

it("deberia simular la funcion de devolucion de llamada", () => {
        let mock = jest.fn();
        let miCallback = new MiCallback();
        miCallback.callback("test", mock);
        expect(mock).toHaveBeenCalled();
});
Anuncios

Lo primero que haremos sera definir un clase que usaremos de callback. En ella tendremos un solo metodo que recibira dos argumentos: el primero es un valor y el segundo es una funcion que usaremos de callback. Esta recibe un valor de tipo string pero mostrara un mensaje en consola indicando que este metodo invoca al recibido y esto lo haremos mediante el return que le sigue.

Anuncios
Anuncios

En nuestro test, primero definiremos un objeto llamado mock que almacena el resultado del llamado a la funcion jest.fn. Esta es la creadora de la funcion mock, la cual puede ser usada rapidamennte como un reemplazo de la funcion de callback. Lo siguiente sera crear un objeto de la clase anterior y con este haremos un llamado al metodo donde primero le pasaremos un texto junto al objeto mock que definimos al inicio del test. Por ultimo haremos el test con expect y mock, le aplicaremos el metodo toHaveBeenCalled para verificar si este fue llamado. Probemos y veamos como es su salida:

$ npm test

> testing@1.0.0 test
> jest

  console.log
    callback invocando a fn

      at MiCallback.callback (hola.spec.ts:5:11)

 PASS  ./hola.spec.ts (7.888 s)
  ✓ deberia simular la funcion de devolucion de llamada (247 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        8.853 s
Ran all test suites.
$
Anuncios

Observemos como no solo realizo la llamada a la funcion callback sino que tambien paso correctamente el test. Esta ultima funcion tambien tiene una alternativa donde podemos pasarle si fue llamada con un argumento. Tomemos la siguiente linea:

expect(mock).toHaveBeenCalled();
Anuncios

Y realicen la siguiente modificacion:

expect(mock).toHaveBeenCalledWith("test");
Anuncios

El expect no recibe ninguna modificacion pero si cambiamos la funcion y le pasamos el argumento a verificar, si lo prueban nos devolveria el mismo resultado que antes porque es lo que le pasamos pero si no fuera cierto nos devolveria un fallo. Antes de finalizar les dejo un link con todos los archivos utilizados y modificados en este post:

Anuncios

En resumen, hoy hemos visto a jest mocks, que es, para que sirve, como se utiliza, un ejemplo simple y practico y luego otro mas parecido a lo que podemos cruzarnos. Espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50