Вы можете использовать moxios
или axios-mock-adapter
для автоматического макета запросов Axios.Я предпочитаю последнее для эргономики разработчика.
Рассмотрим этот UserList
компонент, который использует Axios для выборки пользовательских данных:
// UserList.vue
export default {
data() {
return {
users: []
};
},
methods: {
async loadUsers() {
const { data } = await axios.get("https://api/users");
this.users = data;
}
}
};
С axios-mock-adapter
связанные тестовые заглушки Axios GET
запрашивает URL API, возвращая вместо этого фиктивные данные:
import axios from "axios";
const MockAdapter = require("axios-mock-adapter");
const mock = new MockAdapter(axios);
import { shallowMount } from "@vue/test-utils";
import UserList from "@/components/UserList";
describe("UserList", () => {
afterAll(() => mock.restore());
beforeEach(() => mock.reset());
it("loads users", async () => {
mock
.onGet("https://api/users")
.reply(200, [{ name: "foo" }, { name: "bar" }, { name: "baz" }]);
const wrapper = shallowMount(UserList);
await wrapper.vm.loadUsers();
const listItems = wrapper.findAll("li");
expect(listItems).toHaveLength(3);
});
});
демо