Axios-mock-adapter
Axios adapter that allows to easily mock requests
APIs
replyOnce
reply를 1회만 사용하고 싶을 경우 .replyOnce()
를 사용한다.
mock
.onGet("/users")
.replyOnce(200, users) // After the first request to /users, this handler is removed
.onGet("/users")
.replyOnce(500); // The second request to /users will have status code 500
// Any following request would return a 404 since there are
// no matching handlers left
Example
import axios from "axios";
import MockAdapter from "axios-mock-adapter";
import { BASE_URL, fetchUsers } from "./utils";
describe("fetchUsers", () => {
let mock;
beforeAll(() => {
mock = new MockAdapter(axios);
});
afterEach(() => {
mock.reset();
});
describe("when API call is successful", () => {
it("should return users list", async () => {
// given
const users = [
{ id: 1, name: "John" },
{ id: 2, name: "Andrew" },
];
mock.onGet(`${BASE_URL}/users`).reply(200, users);
// when
const result = await fetchUsers();
// then
expect(mock.history.get[0].url).toEqual(`${BASE_URL}/users`);
expect(result.data).toEqual(users);
});
});
describe("when API call fails", () => {
it("should return empty users list", async () => {
// given
mock.onGet(`${BASE_URL}/users`).networkErrorOnce();
// when
const result = await fetchUsers();
// then
expect(mock.history.get[0].url).toEqual(`${BASE_URL}/users`);
expect(result).toEqual([]);
});
});
});
See also
- jest
- axios
- Jest:Mock:Axios
- jest.mock
- jest-mock-axios
- axios-mock-adapter
- faker - 가짜 데이터를 생성해주는 라이브러리