Vue -test-utils не ждет ответа от запроса API - PullRequest
0 голосов
/ 06 марта 2020

Я действительно изо всех сил пытался сделать что-то очень простое. Мне нужно написать несколько тестов для приложения Vue.

Сценарий, который я хочу протестировать, следующий:

  1. Пользователь заполняет форму
  2. Пользователь отправляет форму
  3. Значения из формы отправляются бэкэнду в одном объекте
  4. Сервер отвечает объектом, содержащим поля объекта, который он получил в запросе (плюс некоторые новые поля).
  5. Приложение Vue сохраняет результат в хранилище Vuex

Я хочу, чтобы мой тест проверял, если после проверки формы запрос сделано, и возвращенные значения должным образом сохранены в хранилище.

Это супер-основа c, но по какой-то причине я не могу заставить тест работать.

У меня есть глобально зарегистрированный компонент, который делает доступ к ax ios доступным с помощью this.api.
. Итак, в моем тесте у меня есть следующее (файл для этого поста упрощен):

...
import axios from 'axios';
import AxiosMockAdapter from 'axios-mock-adapter';
import flushPromises from 'flush-promises';

// This is the axios setup used in the components
import api from '../../src/mixins/api';

// Components
import MyComponent from '../component.vue';

describe('MyComponent', () => {
  // Set up the local vue
  ...

  const wrapper = mount(MyComponent, {
    localVue,
    ...
  });

  beforeEach(() => {
    const instance = axios.create({
      baseURL: 'some/url/',
    });
    wrapper.vm.api = new AxiosMockAdapter(instance);
    wrapper.vm.api.onPost('url/').replyOnce(201, { data: { foo: 'bar' } });
  });

  it('should retrieve the data', async () => {
     wrapper.find('#submit').trigger('click');

    await flushPromises();
    expect(wrapper.vm.$store.state.foo !== undefined).toBe(true);
  });
});

Но тест не не успешно Я думаю, что запрос сделан правильно, но к тому времени, когда тест заканчивается, ответ еще не получен. И это несмотря на использование flushPromises(). Я также пытался использовать setTimeout, но безуспешно.

Я новичок в модульном тестировании (особенно в интерфейсных приложениях) и понятия не имею, что еще можно попробовать. Nothng работает ... Это очень расстраивает, потому что то, что я пытаюсь сделать, довольно прямолинейно и основно c.

У кого-нибудь есть идеи, что делать?

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