Aprende a resolver con confianza el dominio de unit testing del examen JSNAT. Aquí tienes un enfoque directo para cubrir el último ejercicio: elegir un framework, escribir tres aserciones claras con deep equal y ejecutar los tests con npm test. Dominarás validaciones de string, manejo de errors y pruebas sobre objects sin complicaciones.
¿Qué evalúa el dominio de unit testing en JSNAT?
Este dominio pesa 6% y se resuelve con un único ejercicio (task 13.1). Se trabaja sobre un aplicativo de Node y el reto central es testear un módulo con tres resultados posibles.
Usa un framework de pruebas en Node: Tape, Mocha o Abba. Evita Jest por problemas en la certificación.
Conoce bien el framework elegido y una librería de aserciones si la necesitas.
El archivo a probar es toTest.js y el test va en answer.js.
¿Qué hace el módulo toTest.js?
El module exporta una única función que recibe un argumento tipo string y contempla tres salidas:
Si el string corresponde a un usuario válido: retorna un user object.
Si no es un usuario: retorna un object con un error message (por ejemplo: not found).
Si el argumento no es string: hace throw de un TypeError.
¿Cómo testear los tres casos con Mocha y deep equal?
La solución propone tres aserciones con nombres claros usando la convención de Mocha: it returns an user object, it returns an object with an error y throws an error. Al comparar objects, utiliza deep equal.
Caso 1: usuario válido devuelve un objeto con las claves esperadas (por ejemplo: password y role).
Caso 2: usuario inexistente devuelve { error: 'not found' }.
Caso 3: un argumento que no es string lanza TypeError.
¿Cómo se vería el test en answer.js?
// answer.jsconst toTest =require('./toTest');it('returns an user object',()=>{const result =toTest('admin');// estructura esperada con password y role.expect(result).to.deep.equal({password:'...',// valores según toTest.jsrole:'...'// valores según toTest.js});});it('returns an object with an error',()=>{const result =toTest('no user');expect(result).to.deep.equal({error:'not found'});});it('throws an error',()=>{constcall=()=>toTest(123);expect(call).to.throw(TypeError);});
¿Cómo configurar package.json para npm test?
Define el script de prueba para ejecutar Mocha sobre answer.js. Así ejecutas todo con un simple npm test.
{"scripts":{"test":"mocha answer"}}
¿Qué habilidades y keywords debes dominar?
Más allá de escribir código, aquí se mide tu capacidad para traducir requisitos a casos de prueba y configurar el entorno de ejecución.
Selección de framework: Tape, Mocha o Abba. Evitar Jest.
Aserciones sobre objects con deep equal.
Manejo de errores: throw y TypeError.
Validación de tipos: asegurar que el argumento sea string.
Configuración de package.json y uso de npm test.
Organización de pruebas: answer.js probando toTest.js con nombres de tests claros.
¿Tú con qué framework probarías este módulo y cómo nombrarías tus casos de prueba? Cuéntalo en los comentarios.