интеграционные тесты - redux / реагировать + nock.js - PullRequest
0 голосов
/ 15 октября 2018

Понятия не имею, как найти способ написания этого интеграционного теста.Я использую энзим для насмешливых компонентов реакции, jest для тестирования и nock для насмешливых вызовов axios api.

До сих пор я создал тест, имитирующий нажатие на кнопку, и я хотел бы посмеяться над вызовом api.

В интернете особой помощи нет.

Мой тест:

 it('Should invoke clear action and clear the group', (done) => {
    // GIVEN
    const clearButtonComponent = wrapper.find('[id="123"]');
    nock('http://localhost:8080')
      .intercept('/path/api/brum/123/group', 'DELETE')
      .reply(200, {
        status: 200,
        message: 'cleared',
      });
    const service = new myService();

    // WHEN
    clearButtonComponent.first().simulate('click');
    const result = Promise.resolve(service.clearGroup(123));

    // THEN
    expect(result).toEqual({ x: 'x' }); // I know it's not what I expect
    wrapper.update();
    done(); 
  });

асинхронное действие приставка:

export const clearGroup = id=> (dispatch, getState) => {
  myService.clearGroup(id)
    .then(() => {
        return dispatch(getGroup(id))
    });
};

метод в myService:

  clearGroup(id) {
    return this._delete(`/${id}/group`);
  }

Конечно, путь более сложный, но мой сервис расширяет базовый сервис, который имеет этот базовый URL.

Может кто-нибудь сказать мне, как смоделировать это, чтобы позволить коду идти дальше?

Он все еще жалуется, что id не определен - похоже, что nock не издевается над ним.

1 Ответ

0 голосов
/ 15 октября 2018

Я бы бросил nock (сейчас я пытаюсь использовать его только для тестирования клиентов) и высмеиваю myService с шуткой.

Я не использую axios, поэтому не использовал это, но этоможет сделать трюк .. https://github.com/knee-cola/jest-mock-axios.

В противном случае вы можете посмотреть на написание собственного макета .. https://jestjs.io/docs/en/es6-class-mocks

...