Покрытие кода не работает для теста Jest с Axios - PullRequest
1 голос
/ 09 мая 2020

Я использую Jest и moxios, чтобы написать тест для моей asyn c функции:

export function getData(id) {
  return dispatch => {
    return axios({
      method: "get",
      url: `${'url'}/id`
    })
      .then(response => {
        dispatch(setData(response.data));
      })
      .catch(() => alert('Could not fetch data');
  };
}

Тест:

import configureMockStore from "redux-mock-store";
import thunk from "redux-thunk";
import moxios from "moxios";
import getData from '../redux/getData';

const middlewares = [thunk];
const mockStore = configureMockStore(middlewares);
const store = mockStore({});

describe('Test fetch data', () => {
  beforeEach(function() {
    moxios.install();
    store.clearActions();
  });
  afterEach(function() {
    moxios.uninstall();
  });
  it('should fetch data and set it', () => {
         const data = [{ name: 'John', profession: 'developer'}];
         moxios.wait(() => {
         const request = moxios.requests.mostRecent();
         request.respondWith({
           status: 200,
           response: data
         });
        const expectedActions = [setData(data)];
        return store.dispatch(getData()).then(() => {
        expect(store.getActions()).toEqual(expectedActions);
      });
    });
  })
})

Мой тест пройден, но когда я проверяю отчет о покрытии кода, созданный Jest, он показывает, что блок then из getData не был покрыт / вызван. Как я могу это исправить?

1 Ответ

0 голосов
/ 10 мая 2020

moxios.wait return Promise ваша тестовая функция возвращает перед запуском except functions.

вам нужно использовать done callback в вашей тестовой функции

it('should fetch data and set it', (done) => {
    const data = [{
        name: 'John',
        profession: 'developer'
    }];
    moxios.wait(() => {
        const request = moxios.requests.mostRecent();
        request.respondWith({
            status: 200,
            response: data
        });
        const expectedActions = [setData(data)];
        store.dispatch(getData()).then(() => {
            expect(store.getActions()).toEqual(expectedActions);
            done();
        });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...