tengo un directorio api para la comunicación del servidor que usa axios:
import axios from "axios"; const API_BASE_URL = "http://localhost:3002"; axios.defaults.withCredentials = true; const client = axios.create({ baseURL: API_BASE_URL, headers: { "Content-Type": "application/json", }, }); function fetchProjects() { return client.get("/projects?_embed=tasks"); } function fetchTasks() { return client.get("/tasks"); } function createTask(params) { return client.post("/tasks", params); } function changeStatus(id, params) { return client.put(`/tasks/${id}`, params); } export { fetchProjects, fetchTasks, createTask, changeStatus };cuando quiero simular la función "createTask" que exporta desde este archivo, aparece un error:
tarea.prueba.js
import configureMockStore from "redux-mock-store"; import { createTask } from "../../actions/tasks"; import * as api from "../../api"; import thunk from "redux-thunk"; // mock api module jest.unmock("../../api") api.createTask = jest.fn(() => Promise.resolve({data : 'foo'})) // configuration mock store const middleware = [thunk]; const mockStore = configureMockStore(middleware); // suite tests describe("create task action create store<async>", () => { test("works", async () => { const expectedActions = [ { type: "REQUEST_STARTED" }, { type: "CREATE_TASK_SUCCEED", payLoad: { task: "foo" }, meta: { analytics: { event: "create_task", data: { id: undefined } } }, }, ]; const store = mockStore({ tasks: { tasks: [], }, }); await store.dispatch(createTask({})); expect(store.getActions()).toEqual(expectedActions); }); });y el error es:
TypeError: Cannot read properties of undefined (reading 'then') 23 | return (dispatch) => { 24 | dispatch(requestStarted()); > 25 | api | ^ 26 | .createTask({ title, description, status, timer, projectId }) 27 | .then((resp) => { 28 | dispatch(createTaskSucceed(resp.data));parece que la función simulada no devuelve un Promsie y no sé por qué. cuando me burlo del módulo api con "jest.mock", funciona sin ningún error