Consulte el código a continuación. Código Server.js que llama a una API encerrada en la función loadUser y llamada por la función fullNameGen para crear el nombre completo
const axios = require('axios'); function loadUser(){ return new Promise((resolve,reject)=>{ console.log("Load user called"); axios.get('https://reqres.in/api/users/2').then((response)=>{ resolve(response); }).catch((err)=>{ reject(err); }) }) } function fullNameGen(){ return new Promise((res,rej)=>{ loadUser().then(({data:info})=>{ console.log(info.data); res(info.data.first_name+" "+info.data.last_name); }).catch((err)=>{ console.log(err.message); rej(err.message); }) }) } module.exports={ fullNameGen:fullNameGen, loadUser:loadUser }
Y en el archivo server.test.js estoy tratando de simular la función loadUser, no el axios directamente. Pero la prueba sigue llamando axios con la API.
servidor.prueba.js
const axios = require('axios'); const server = require('./server'); test("Check full Name generation",async()=>{ server.loadUser=jest.fn(); server.loadUser.mockResolvedValue={ data:{ data:{ first_name:"rav", last_name:"shekhar" }} }; const result = await server.fullNameGen(); expect(result).toBe("ravi shekhar"); expect(server.fullNameGen).toBeCalledTimes(1) })
Por favor, dígame por qué esta prueba está dando el error expect(received).toBe(expected) // Object.is equal
Expected: "ravi shekhar" Received: "Janet Weaver" 28 | const result = await server.fullNameGen(); 29 | > 30 | expect(result).toBe("ravi shekhar"); | ^ 31 | expect(server.fullNameGen).toBeCalledTimes(1) 32 | }) at Object.<anonymous> (server.test.js:30:20)