@asdasdqwe

Как создать mock для axios create?

app.jsx
useEffect(() => {
    const axiosClient = axios.create({
        baseURL: `http://localhost:8000/api`,
    });

    axiosClient.get(`/categories/list`);
})


app.test.jsx
import App from "./app.jsx";
import axios from "axios";

jest.mock("axios");

test("should display app", async () => {

    axios.get.mockImplementation((url) => {
        return Promise.resolve({
            data: [{ id: 1, name: "books" }],
        });
    });

    render(<App />);

    expect(await screen.findByText("books")).toBeInTheDocument();
});


В итоге ошибка
TypeError: Cannot read properties of undefined (reading 'get')

> 14 | axiosClient.get(`/categories/list`);
| ^
  • Вопрос задан
  • 548 просмотров
Решения вопроса 1
@asdasdqwe Автор вопроса
Надо создать mock для create метода тоже

import App from "./app.jsx";
import axios from "axios";

jest.mock("axios");

beforeEach(() => {
		axios.create = jest.fn(() => axios);

		axios.get.mockImplementation((url) => {
        return Promise.resolve({
            data: [{ id: 1, name: "books" }],
        });
    });
	});

test("should display app", async () => {

    render(<App />);

    expect(await screen.findByText("books")).toBeInTheDocument();
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Devilz_1
@Devilz_1
Frontend-Developer
Используйте jest-mock-axios
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы