Как я могу проверить действие с шуткой, если это действие имеет thunk и axios? - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь с помощью шутки проверить мои действия и редуктор. Я не понимаю проблему, пожалуйста, помогите.

Это мое действие:

import { GET_TEXT } from './types';
import axios from 'axios';

export const getText = (text) => dispatch => {
    let obj = {text: text};
    const productsAPI = "http://192.168.0.22:3000/getText";
    axios.post(productsAPI, obj)
        .then(res => {
            console.log(res)
            dispatch({
                type: GET_TEXT,
                payload: res.data,
            });
        })
}

и это мой App.jest.test :

import * as action from './store/actions/textAction';
import * as types from './store/actions/types';
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import fetchMock from 'fetch-mock';



const middlewares = [thunk];
const mockStore = configureMockStore(middlewares)
console.log("Llegue hasta aqui");
describe('async actions', () => {

  it('should dispatch actions of ConstantA and ConstantB', () => {
    const expectedActions = {type: types.GET_TEXT, payload: 'Hola'};

    const store = mockStore({})
    store.dispatch(action.getText('Hola'));

    expect(store.getActions()).toEqual(expectedActions)
  })
})

Всегда выдает ошибку Error: Network Error

Что происходит?

1 Ответ

0 голосов
/ 05 сентября 2018

Поскольку вы используете axios, рассмотрите возможность использования moxios вместо fetch-mock для проверки сетевых запросов.

Чтобы использовать moxios, вы просто устанавливаете и удаляете moxios до и после каждого теста:

beforeEach(function () {
  moxios.install()
})

afterEach(function () {
  moxios.uninstall()
})

Затем вы можете указать макет для определенного URL-адреса запроса в своем тесте следующим образом:

it('should dispatch actions of ConstantA and ConstantB', () => {

  const expectedActions = {type: types.GET_TEXT, payload: 'Hola'};

  // Mock an end point and response for requests to /test
  moxios.stubRequest('/test', {
    status: 200,
    responseText: 'the mocked result'
  })    

  const expectedActions = {type: types.GET_TEXT, payload: 'Hola'};

    const store = mockStore({})
    store.dispatch(action.getText('Hola'));

    expect(store.getActions()).toEqual(expectedActions)

 })

Для получения дополнительной информации о moxios, см. Эту ссылку

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