Anuncios

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

Anuncios

En el post anterior vimos que podemos tener varios tests tanto en el codigo como agrupados pero muchas veces no queremos correr todos sino algunos especificos. Para esta situacion tenemos varias opciones y para ello necesitaremos a nuestro proyecto generado 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, pasemos a ver la primera de las opciones que disponemos. Para ello deben ir al archivo hola.spec.ts y modificar el codigo de la siguiente manera:

hola.spec.ts

describe("un grupo de tests", () => {
        test.only("primer test", () => {
                expect("ejemplo").toEqual("ejemplo");
        });
        it("segundo test", () => {
                expect("ejemplo").not.toEqual("otro ejemplo");
        });
});
Anuncios
Anuncios

En este codigo primero definiremos un grupo donde contendra dos tests, en ambos casos verificamos mediante toEqual si el valor que posee es igual al de expect. En el segundo caso funcionara porque aplicamos un not por lo cual devolvera un true. Esto es un resumen del codigo visto en el post anterior pero aqui agregamos una nueva opcion como es la funcion only. Esta se aplica directamente a la funcion de test y le indicara que este test debe realizar y debe excluir al resto de los que no poseen un only. Podemos aplicar todos los que sean necesarios. Con esto comentado probemos a ver que nos devuelve el test:

$ npm test

> testing@1.0.0 test
> jest

 PASS  ./hola.spec.ts (6.98 s)
  un grupo de tests
    ✓ primer test (103 ms)
    ○ skipped segundo test

Test Suites: 1 passed, 1 total
Tests:       1 skipped, 1 passed, 2 total
Snapshots:   0 total
Time:        8.024 s, estimated 57 s
Ran all test suites.
$
Anuncios

Como pueden ver nos realizo solo el primer test pero nos esquivo el segundo, y si observan en el resumen nos lo notifico. Porque como mencionamos anteriormente es el unico indicado a forzar su ejecucion. Vamos a tomar el codigo anterior y modificarlo de la siguiente manera:

describe("un grupo de tests", () => {
        test.only("primer test", () => {
                expect("ejemplo").toEqual("ejemplo");
        });
        fit("segundo test", () => {
                expect("ejemplo").not.toEqual("otro ejemplo");
        });
        it("tercer test", () => {
                expect(true).toBeFalsy();
        });
});
Anuncios
Anuncios

Vamos a lo primero, para el segundo test reemplazamos a it con fit, basicamente es la misma funcion, pero el f que le anteponemos es para indicar que fuerce el test por mas que lo hayamos marcado para esquivarlo, en este caso por el only anterior, y luego agregamos otro test. En este caso el usado en este post. Y en este ultimo test usamos a toBeFalsy le indicamos que el valor en except tiene que ser false pero como le pasamos true fallara, probemos para ver como es su salida:

$ npm test

> testing@1.0.0 test
> jest

 PASS  ./hola.spec.ts (52.675 s)
  un grupo de tests
    ✓ primer test (32 ms)
    ✓ segundo test (4 ms)
    ○ skipped tercer test

Test Suites: 1 passed, 1 total
Tests:       1 skipped, 2 passed, 3 total
Snapshots:   0 total
Time:        54.369 s
Ran all test suites.
$
Anuncios

Si observan la salida no devolvio ningun error, a pesar que el ultimo test produce una falla, pero por que? Simplemente porque lo esquivamos y no lo chequeamos. Es decir que podemos forzar los test mediante la letra f delante de la funcion como lo hace only pero de una manera mas practica. Lo bueno de la letra f es que podemos aplicarla en describe, tomemos el codigo anterior y hagamos algunas modificaciones:

fdescribe("un grupo de tests", () => {
        test("primer test", () => {
                expect("ejemplo").toEqual("ejemplo");
        });
        it("segundo test", () => {
                expect("ejemplo").not.toEqual("otro ejemplo");
        });
        xit("tercer test", () => {
                expect(true).toBeFalsy();
        });
});
Anuncios

En este caso aplicamos la f directamente al describe para que fuerce todos los test dentro del grupo pero tenemos una excepcion. Al tercer test que sabemos que falla le pusimos una x para que se eXcluido. Ejecutemos el test para ver que sucede:

$ npm test

> testing@1.0.0 test
> jest

 PASS  ./hola.spec.ts (49.585 s)
  un grupo de tests
    ✓ primer test (30 ms)
    ✓ segundo test (4 ms)
    ○ skipped tercer test

Test Suites: 1 passed, 1 total
Tests:       1 skipped, 2 passed, 3 total
Snapshots:   0 total
Time:        50.849 s, estimated 53 s
Ran all test suites.
$
Anuncios

De vuelta, pasamos los test que permitimos y el que excluimos con la x no lo hicimos y sabiendo que falla pero al no hacerlo no recibimos ninguna notificacion. Un detalle a tener en cuenta, en los ultimos ejemplos lo usamos para evitar que se active el error pero esto es lo que debemos evitar porque sino perdemos el proposito principal de los tests. Antes de finalizar les dejo un link con todos los archivos utilizados y modificados en este post:

Anuncios

En resumen, hoy hemos visto como forzar y esquivar test, las distintas formas, algunas posibilidades que nos permite, asi como tambien una practica que debemos evitar. 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