Saber cómo testar la clase user.js es un ejercicio práctico que tiene la intención de comprobar la realización de promesas o peticiones a API o endpoints. Además, te ayuda a saber si realmente estás obteniendo lo que has solicitado.
En este post, aprenderás a testar la clase user.js, sin necesidad de emplear los mocks de herramientas como Jest.
¿Cómo testar la clase user.js?
El uso de mocks es bastante usual para realizarle comprobaciones a las peticiones que le hagamos a un endpoint o a una API, ya que nos facilitan el proceso. Sin embargo, en este caso, vamos a ver cómo se puede testar la clase user.js sin necesidad de mocks, para después ver cómo luce su interfaz dentro de las comprobaciones o los test.
Realizar la petición
Para empezar el proceso de testar la clase user.js, debemos hacerle una petición a un endpoint de users (una lista de datos, donde uno de los valores son los usuarios). Cuando realizamos este acceso al endpoint, creamos una clase users, que tendrá un método estático, y vamos a obtener los datos. Esto es importante porque, luego, devolverá los usuarios y no todo el objeto de la petición o la response.
Por último, tendremos que exponer todos los usuarios.
import axios from axios
const ENDPOINT = 'Link del endpoint';
class Users {
static all() {
return axios.get ('${ENDPOINT} /users').then (response => response.data)
}
}
module.exports = Users
Test sin mocking
Ahora, vamos a testar la clase users que acabamos de instanciar en el fichero anterior. Podría ejecutarse con un mock; para probarla sin él, tendremos que describirlo con un without mocking, como verás en el siguiente extracto de código.
Una vez describamos el testeo, vamos a empezar punto por punto. Primero, vamos a comprobar que sean 10 users lo que se devuelven. Para realizar este test, vamos a utilizar async para agregar otro test, donde esperaremos, por lo menos, un test y que la longitud o cantidad de la UserList sea solo de 10 objetos. Aquí también tendrás que capturarla. Un aspecto importante dentro de la realización de este test es que, como no estamos utilizando el mock para realizar la petición, el test le está preguntando directamente al servidor, por lo que te devolverá 10 resultados o los 10 usuarios.
Por otro lado, otra comprobación que puedes realizar es ver si está devolviendo las etiquetas de los users correctos, es decir, si los obtienes en el orden que se lista y si aparecen de la forma correcta. En este caso, y revisando el endpoint personalmente, vemos que Bret es el primer nombre de la lista de usuarios. Podemos utilizar el método toMatchObject, que se utiliza para trabajar con objetos como el user y comprobar que lo que nos devuelva es correcto, es decir, que sea Bret.
A continuación, puedes visualizar el extracto de código en el que se ven todos los métodos y las clases en ejecución:
import Users from './Users.js'
describe ('User class', () => {
describe ('Without mocking', () => {
it ('should return 10 users', async() => {
expect.assertions (1)
try {
const userList = await Users.all()
expect (userList).toHaveLength (10)
} catch (e) {
console.log (e)
}
it ('should have users [0].username == Bret', async () => {
expect.assertions (1)
try {
const userList = await Users.all ()
expecto (userList(0)).toMatchObject [[username: 'Bret'})
} catch (e) {
console.log (e)
}
})
Así pues, lo que acabas de visualizar sería la manera de trabajar sin mocks. Nos faltaría buscar la forma de implementarlas con mocks de Jest.
Los test o comprobaciones sobre las peticiones o promesas son muy importantes, ya que nos permiten saber, realmente y de forma efectiva, que lo que estamos solicitando y obteniendo están en equilibro. Es decir, que lo que hay en el endpoint también nos lo pinta en el módulo propio.
Por eso, aprender cómo testar la clase user.js sin mocks es un gran punto de partida para seguir formándote. ¿Qué pasaría si utilizáramos mocks? Si quieres saber cómo se haría y que resultados daría, te invitamos a apuntarte a nuestra formación en Bootcamp Web Full Stack, donde aprenderás a nivel teórico y práctico para, en menos de un año, convertirte en todo un profesional IT. ¡Atrévete a cambiar tu vida y pide ahora más información!