Si usan npm run test o npm test para correr los tests y quieren pasar argumentos al comando, para que se ejecuten los test de un determinado fichero, pueden hacerlo añadiendo el flag --
ejemplo:
npm run test -- numbers.test.js
En mi caso, no pongo .test.js al comando, solo doy:
yarn test numbers
Y funciona
No es necesario colocar .test.js con npm.
$npm test – numbers // seria suficiente
Para comparar los flotantes puedes usar toBeCloseTo a cambio de toEqual. Esto porque no te gustaría hacer un test que dependa de un redondeo, y salte un error.
test('adding floating point numbers',()=>{const value =0.1+0.2;//expect(value).toBe(0.3); This won't work because of rounding errorexpect(value).toBeCloseTo(0.3);// This works.});
Excelente dato!
Gracias por la aclaración!
Pensando un poco en código de aplicaciones reales siento más ordenado hacer el export al final que en la función
functionnumbers(a, b){return a + b;}export{numbers};
Hola, disculpe a que se refiere con matchers tocados?
Con web Storm las pruebas se realizan con un solo click sin tener que configurar babel ni nada, recomiendo instalar @types/jest para que el editor reconozca slaudos
Holis XD, les comparto varios ejercicios que me ayudaron a comprender mejor la función "toBeCloseTo()" y sus restricciones en cuanto a rangos de valores adminitidos según el número de decimales, es decir la precisión con la que esperamos validar nuestros valores. Bastante interesante...
Para probarlo, deben crear un archivo llamado single.test.js dentro del directorio test.
Hola vscode no me auto-completa los métodos de jest .toBeGreaterThan(), ect, qué plugin están utilizando?
Entiendo que esa funcionalidad vienen con este plugin de VScode
JADE
pero no he podido configurarla .... si alguien sabe le agradeceria :)
Listo , resuelto 😁
hay que instalar esta dependencia.
npm install --save-dev @types/jest
Y ya con eso VScode es capaz de hacer la sugerencia en las funciones de JEST
con npm run test num . es suficiente para que jest ejecute los test del archivo numbers, es decir con solo indicar una parte del nombre del archivo es suficientel
Me desespera que diga "GE" "ES" en lugar de jey es!! A alguien mas le pasa? Igual es un capo, la tiene re clara :D
Solo un poco :P
Recomiendo la extension "Jest Runner", en vsCode, es extremadamente util, nos muestra el resultado de los test sin necesidad de ejecutarlos en consola, espero les pueda servir!
Respecto a más de un describe en un archivo de pruebas, personalmente no estoy de acuerdo ya que al poner un describe() se abre una nueva instancia de pruebas internamente en jest y esto puede generar demoras en la compilación, lo digo por que nos pasó con un proyecto que tenia más de mil pruebas y que estaba lleno de describes en cada archivo y se reventabas las pruebas por timeOut.
Al dia de hoy, 28 de Julio de 2019 no encuentro la forma de correr solo una prueba en especifico, ya que el comando que da el profe ya no funciona
si estas directamente en la consola y no te reconoce el comando "jest" prueba con npx jest "NombreDelArchivo"
primero debes tener instalado de manera globar jest con npm install --save-dev jest --global deede tu terminal
Estaba experimentando, y colocando al final del archivo numbers.js (export default nombreFuncion), me sale un error de que numbers no es una función. Pero haciendolo como el profesor, todo es correcto. Alguien sabe la diferencia en el modo de exportar estos archivos?
Hola ¿cómo estás importando a number.js? Porque la diferencia es que cuando haces export const es que solo estás exportando una parte del código del archivo, por lo que la forma correcta de importarlo sería import { numbers } from 'numbers' y si lo haces con export default, le estás indicando que lo que se importará por defecto será la función que señales y se importa así import numbers from 'numbers'
Solo son parte de la destructuración que ya tiene por defecto JavaScript.
Gracias Luis, ese fue mi error, no colocar los {}, olvidé por completo ese detalle. Gracias por tu ayuda.
Cuando escribe los matchers el VSCode le autocompleta con los matchers disponibles, ¿Qué plugin de VSCode está usando?
Me pueden indicar que plugin usa el profe para autocompletar la escritura de las pruebas unitarias.
en estos ejemplos se usa para hacer fallar las pruebas, en el caso de usarlas ya en codigo siempre se tiene que hacer fallar el codigo?
Las pruebas unitarias (y en general el mundo del testing y la calidad del software) es muy amplio. es otro mundo completamente.
Unit testing no es “hacer fallar el código”, se trata de hacer un código que evalue diferentes escenarios respecto a un fragmento de tu código, y que este no se rompa de manera crítica.
Si por ejemplo tu tienes una llamada a una API, que espera un body y header, tu unit testing debe esperar que si la llamada no se logra, falla, no se manda el body, o la API no responde, el código reciba y maneje correctamente los errores.
Es para evitar un error que rompa el código y la aplicación falle. Unit testing previene fallos. es eso. Si a una función que espera strings le pasas un int, no estás haciendo fallar el código, lo que deberías es estar verificando que cuando truene el código tu código sea capaz de manejar el error.
Es mi compu o el audio esta bajito del video
import{numbers}from'../numbers.js'/**
*
.toBeGreaterThan() MAYOR: >
.toBeGreaterThanOrEqual() MAYOR IGUAL: >=
.toBeLessThan() MENOR: <
.toBeLessThanOrEqual() MERNOR IGUAL: <=
.toBeCloseTo() VALORES FLOTANTES
*/describe("Comparación de números",()=>{test('Mayor qué',()=>{expect(numbers(2,2)).toBeGreaterThan(3);});test('Mayor ó igual qué',()=>{expect(numbers(2,2)).toBeGreaterThanOrEqual(4);});test('Menor qué',()=>{expect(numbers(2,2)).toBeLessThan(5);});test('Menor ó igual qué',()=>{expect(numbers(2,2)).toBeLessThanOrEqual(4);});test('Igualdad en un valor flotante',()=>{expect(numbers(0.2,0.2)).toBeCloseTo(0.4);});test('Diferencia en un valor flotante',()=>{expect(numbers(0.2,0.2)).not.toBeCloseTo(0.5);});});