Как мне проверить это с помощью Jest + Enzyme - PullRequest
0 голосов
/ 30 мая 2018

У меня есть приложение реагировать + машинопись, и у меня есть асинхронный вызов API, выполненный с axios.Я хочу проверить этот асинхронный вызов, используя Jest + Enzyme.

Вот что я имею в своем действии

// load items callback
export function loadItemsSuccess(response) {
  return {
    type: LOAD_ITEMS,
    items: response.data
  };
}

// load items 
export function loadItems() {
  return function (dispatch) {
    const authOptions = {
      method: "GET",
      url: "http://192.168.99.100:3000/items
      headers: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      json: true
    };
    return axios(authOptions).then(response => {
      dispatch(loadItemsSuccess(response));
    }).catch(error => {
      console.log("Error loading items, error);
    });
  };
}

Мой редуктор просто обновляет магазин:

case LOAD_ITEMS:
  console.log(action.items);
  return action.items;

1 Ответ

0 голосов
/ 31 мая 2018

Юнит-тестирование действия должно проверять, отправлен ли ожидаемый объект.

Один из способов сделать это - использовать комбинацию redux-mock-store и axios-mock-adapter.

import configureMockStore from 'redux-mock-store'
import thunk from 'redux-thunk'
import axios from 'axios'
import MockAdapter from 'axios-mock-adapter'
// import any actions and types

const middleware = [thunk]
const mockStore = configureMockStore(middleware)

describe('loadItems', () => {
  it('Dispatches LOAD_ITEMS', () => {
    let mock = new MockAdapter(axios)
    mock
      .onGet('http://192.168.99.100:3000/items')
      .reply(200, { data: 'mock' })

    const store = mockStore({})
    return store.dispatch(actions.loadItems())
      .then(() => {
        const actions = store.getActions()
        expect(actions[0]).toHaveProperty('type', LOAD_ITEMS)
      })
   })
})

Редукторы и значения в магазине должны быть проверены как отдельная единица.Мы просто используем mockStore для отправки действия и обеспечения отправки правильного типа.MockAdapter проверяет сетевые запросы.Таким образом, мы можем создавать тесты в различных сетевых условиях, таких как 400 с и время ожидания.

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