Модульный тест для customPollingHook, который использует apollo useLazyQuery - PullRequest
0 голосов
/ 21 октября 2019

Итак, я написал пользовательский хук опроса, который использует хуки useContext и useLazyQuery. Я хочу написать для этого модульный тест, который должен охватывать состояние возвращаемых значений и побочный эффект.

Пока мне удалось сделать это много, но я не уверен, как действовать дальше. Любые советы?

export const useUploadActivityPolling = (
  teId: TeIdType
): UploadActivityPollingResult => {
  const { dispatch, uploadActivityId }: StoreContextType = useAppContext();

  const [fetchActivityStatus, { error: UploadActivityError, data: UploadActivityData, stopPolling }] = useLazyQuery(
    GET_UPLOAD_ACTIVITY,
    {
      pollInterval: 3000,
      fetchPolicy: 'network-only',
      variables: { teId, activityId: uploadActivityId },
    }
  );

  useEffect(() => {
    if (UploadActivityData) {
      setUploadActivityId(
        UploadActivityData.getUploadActivityStatus.activity_id,
        dispatch
      );
      updateActivityStateAction(UploadActivityData.getExcelUploadActivityStatus.status, dispatch);
    }
  }, [UploadActivityData]);

  return { fetchActivityStatus, stopPolling, UploadActivityError };
};

import React from 'react';
import { mount } from 'enzyme';

const TestCustomHook = ({ callback }) => {
  callback();
  return null;
};

export const testCustomHook = callback => {
  mount(<TestCustomHook callback={callback} />);
};


describe('useUploadActivityPolling', () => {
  let pollingResult;
  const teId = 'some id';

  beforeEach(() => {
    testCustomHook(() => {
      pollingResult = useUploadActivityPolling(teId);
    });
  });

  test('should have an fetchActivityStatus function', () => {
    expect(pollingResult.fetchActivityStatus).toBeInstanceOf(Function);
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...