Estoy usando axios para obtener algunos datos de usuario de una API y enviarlos a una matriz en un archivo JS estándar como este:
export async function fetchUsernames() { let usernames = []; axios.get("https://jsonplaceholder.typicode.com/users").then((users) => { for (let user of users.data) { usernames.push(user["username"]); } return usernames; }); } El problema es que, a pesar de que funciona correctamente en mi interfaz cuando lo conecto con reaccionar, mi bloque de prueba de jest siempre queda undefined como el valor de retorno, aunque uso async/await. Este es mi bloque de prueba:
test('Usernames get fetched properly', async () => { const usernames = await fetchUsernames(); expect(usernames).toBe(expect.arrayContaining(['Brett'])); });Este es el mensaje de error que me sale:
× Usernames get fetched properly (17 ms) ● Usernames get fetched properly expect(received).toBe(expected) // Object.is equality Expected: ArrayContaining ["Brett"] Received: undefined 12 | test('Usernames get fetched properly', async () => { 13 | const usernames = await fetchUsernames(); > 14 | expect(usernames).toBe(expect.arrayContaining(['Brett'])); | ^ 15 | }); at Object.<anonymous> (src/App.test.js:14:21) Test Suites: 1 failed, 1 total Tests: 1 failed, 1 passed, 2 total Snapshots: 0 total Time: 4.038 s Ran all test suites related to changed files.¿Cuál podría ser la causa más probable detrás de este problema?
Cambie la función fetchUser de la siguiente manera.
async function fetchUsernames() { let usernames = []; let users = await axios.get("https://jsonplaceholder.typicode.com/users"); for (let user of users.data) { usernames.push(user["username"]); } return usernames; }Esto devolverá una matriz de nombres de usuario.
test('Usernames get fetched properly', async () => { const usernames = await fetchUsernames(); expect(usernames).toBe(expect.arrayContaining(['Brett'])); });