Rematch / Effects - ошибка при выполнении тестовых случаев, написанных с помощью библиотеки реагирующего тестирования - PullRequest
0 голосов
/ 26 марта 2020

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

Мои эффекты. js

export async function getStoredData(param1, store, param2) {
try {
    dispatch(setLoading(true, 'getStoredData'));
    // Check if key exists in store
    const inputKeyCode = getInputKeyCode([param1, param2]);
    let response = getUserDataState(store)[inputKeyCode];
    if (!response) {
      response = await getUserApi(param1, param2);
      this.setUserData({ keyCode: inputKeyCode, keyValue: response });
    }
    return response;
  } catch (error) {
    // dispatch error
  } finally {
    dispatch(setLoading(false, 'getStoredData'));
  }
}

Мои редукторы. js

const INITIAL_STATE = {
  userData: {},
};

const setUserData = (state, { key, value }) => ({ // {key: value}
  ...state,
  userData: {
    ...state.userData,
    [key]: value,
  },
});

effect.test. js

import { getUserApi } from '../../../api/common';

jest.mock('../../../store', () => ({ dispatch: jest.fn() }));
jest.mock('../../../api/common', () => ({ getUserApi: jest.fn() }));

describe('getStoredData', () => {
  const responseData = {};
  setWith(responseData, 'data.userInformation', 12345);
  const setUserData = jest.fn();

  test('success', async () => {
    getUserApi.mockResolvedValue(responseData);
    await testModel.effects().getStoredData.call({ setuserData });
    expect(setuserData).toHaveBeenCalled();
    expect(setuserData).toHaveBeenCalledWith(12345);
  });

  test('failure', async () => {
    getUserApi.mockRejectedValue(errorMsg);
    await testModel.effects().getStoredData.call({ setuserData });
    expect(showNotification).toHaveBeenCalled();
    expect(showNotification).toHaveBeenCalledWith('error');
  });
});

Это дает мне ошибку ниже -

Expected mock function to have been called, but it was not called.
At line- expect(setuserData).toHaveBeenCalled();

Может кто-нибудь помочь мне понять что я делаю не так? Я предполагаю, что я делаю какую-то ошибку в вызове setuserData. Любая помощь очень ценится.

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