Как я могу проверить вызов API в vuejs, используя jest? - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть этот метод в моем компоненте, который выполняет вызов API с помощью axios. Я проверил документы о том, как его протестировать, но, похоже, не могу понять, как это сделать.Любая помощь будет оценена.

loadContents() {
  axios.get('/vue_api/content/' + this.slug).then(response => {
    this.page_data = response.data.merchandising_page
  }).catch(error => {
    console.log(error)
  })
},

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете использовать 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);
  });
});

демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...