
Son procesos donde se prueba pequeñas unidades de código funcional, (es un bloque de código que verifica la veracidad de un pequeño, aislado bloque de código de una aplicación, comúnmente una función)
Si existen errores de entrada, salida o en la lógica las pruebas nos ayudaran a detectarlos de manera temprana.
En el desarrollo se suelen realizar muchos cambios, las pruebas esperan los mismos resultados así que además podemos detectar donde surgen los errores.
Las pruebas actúan como una forma de documentación, ya que se sabe exactamente lo que s supone que debe de hacer el código.
Con estas preguntas podemos seguir estrategias para escribir test unitarios.
function ordenarPalabras(palabras, orden? = "asendente") {
let copia = [...palabras];
copia.sort();
if (orden === "descendente") {
copia.reverse();
}
return copia;
}
¿Cómo responde a entradas típicas, casos límite o entradas no válidas?
function ordenarPalabras(palabras, orden? = "asendente") {
let copia = [...palabras];
copia.sort();
if (orden === "descendente") {
copia.reverse();
}
return copia;
}
Cuando hay errores en las entradas, ¿cómo responde el sistema?
function ordenarPalabras(palabras, orden? = "asendente") {
let copia = [...palabras];
copia.sort();
if (orden === "descendente") {
copia.reverse();
}
return copia;
}
Un alto porcentaje de cobertura puede significar una mayor calidad del código. Sin embargo, no puede determinar la calidad del código. (Está bien si no alcanzas el 100% de cobertura no te presiones 😊)
Un componente importante al escribir pruebas unitarias es eliminar todas las dependencias para hacer eso nos toparemos con el termino mock function:
Te permite tener un comportamiento predeterminado que sustituye al comportamiento real, capturando las llamadas a esas funciones y sustituyendo su implementación.
Es muy útil al momento de hacer uso de servicios de terceros (como Firebase)
El nombre de tu prueba debería considerar estas partes:
- El nombre del método que será probado
- El escenario
- Y lo que se esperar al ser ejecutado bajo ese escenario
function ordenarPalabras(palabras, orden? = "asendente") {
let copia = [...palabras];
copia.sort();
if (orden === "descendente") {
copia.reverse();
}
return copia;
}
Ordenar por nombre arreglo vacío regresa arreglo vacío.
Nombrar de manera estándar es importante porque expresa la intención explicita de una prueba