Skip to content

Commit 052865e

Browse files
committed
13 - js - PRUEBAS UNITARIAS
1 parent 39e47ed commit 052865e

File tree

1 file changed

+121
-0
lines changed

1 file changed

+121
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
/*
2+
_____________________________________
3+
https://github.com/kenysdev
4+
2024 - JavaScript
5+
_______________________________________
6+
#13 PRUEBAS UNITARIAS
7+
---------------------------------------
8+
* EJERCICIO:
9+
* Crea una función que se encargue de sumar dos números y retornar
10+
* su resultado.
11+
* Crea un test, utilizando las herramientas de tu lenguaje, que sea
12+
* capaz de determinar si esa función se ejecuta correctamente.
13+
*
14+
* DIFICULTAD EXTRA (opcional):
15+
* Crea un diccionario con las siguientes claves y valores:
16+
* "name": "Tu nombre"
17+
* "age": "Tu edad"
18+
* "birth_date": "Tu fecha de nacimiento"
19+
* "programming_languages": ["Listado de lenguajes de programación"]
20+
* Crea dos test:
21+
* - Un primero que determine que existen todos los campos.
22+
* - Un segundo que determine que los datos introducidos son correctos.
23+
24+
________________________________________________________
25+
// Instala Jest en tu proyecto
26+
npm install --save-dev jest
27+
28+
// package.json
29+
{
30+
"scripts": {
31+
"test": "jest"
32+
}
33+
}
34+
35+
// Ejecuta las pruebas:
36+
npm test
37+
npm test -- --verbose
38+
________________________________________________________
39+
*/
40+
41+
// src/sum.js
42+
function sum(a, b) {
43+
if (arguments.length < 2) {
44+
throw new TypeError("Se requieren dos argumentos");
45+
}
46+
47+
if (typeof a === "number" && typeof b === "number") {
48+
return a + b;
49+
} else {
50+
return null;
51+
}
52+
}
53+
54+
// module.exports = sum;
55+
56+
// _____________________________
57+
// Pruebas unitarias
58+
// tests/sum.test.js
59+
// const sum = require("../src/sum");
60+
describe("Test para función suma", () => {
61+
test("Debe devolver la suma correcta", () => {
62+
expect(sum(5, 2)).toBe(7);
63+
expect(sum(2.5, 1.25)).toBe(3.75);
64+
expect(sum(-2, 1)).toBe(-1);
65+
expect(sum(0, 0)).toBe(0);
66+
});
67+
68+
test("Debería devolver nulo para entradas no válidas", () => {
69+
expect(sum(1, "2")).toBeNull();
70+
expect(sum("a", "b")).toBeNull();
71+
});
72+
73+
test("No debería devolver sumas incorrectas", () => {
74+
expect(sum(1, 3)).not.toBe(5);
75+
});
76+
77+
test("Debería lanzar TypeError si faltan argumentos", () => {
78+
expect(() => sum(10)).toThrow(TypeError);
79+
});
80+
});
81+
82+
// ________________________________________________________
83+
// DIFICULTAD EXTRA
84+
85+
// src/dictUser.js
86+
const dictUser = {
87+
name: "Ken",
88+
age: 121,
89+
birth_date: "1903-03-19",
90+
prog_langs: ["cs", "py", "vb", "rs", "js"],
91+
};
92+
93+
// module.exports = dictUser;
94+
95+
// _____________________________
96+
// Pruebas unitarias
97+
// tests/dictUser.test.js
98+
99+
// const dictUser = require("../src/dictUser");
100+
describe("Pruebas para dictUser", () => {
101+
test("Verificar la existencia de las claves en dictUser", () => {
102+
expect(dictUser).toHaveProperty("name");
103+
expect(dictUser).toHaveProperty("age");
104+
expect(dictUser).toHaveProperty("birth_date");
105+
expect(dictUser).toHaveProperty("prog_langs");
106+
});
107+
108+
test("Verificar los tipos de los valores en dictUser", () => {
109+
expect(typeof dictUser.name).toBe("string");
110+
expect(typeof dictUser.age).toBe("number");
111+
expect(typeof dictUser.birth_date).toBe("string");
112+
expect(Array.isArray(dictUser.prog_langs)).toBe(true);
113+
});
114+
115+
test("Verificar el contenido de los valores en dictUser", () => {
116+
expect(dictUser.name).toBe("Ken");
117+
expect(dictUser.age).toBe(121);
118+
expect(dictUser.birth_date).toBe("1903-03-19");
119+
expect(dictUser.prog_langs).toEqual(["cs", "py", "vb", "rs", "js"]);
120+
});
121+
});

0 commit comments

Comments
 (0)