Mock @ apollo / react-hooks useQuery с использованием Jest - PullRequest
0 голосов
/ 10 июля 2020

В настоящее время я пытаюсь имитировать useQuery из index.ts, однако я не могу этого сделать, поскольку useMenu является значением только для чтения.

index.ts

import { useQuery } from "@apollo/react-hooks";
import { MENU } from "../../graphql/queries/menu";

export const useMenu = (myNumber: number) => {
  return useQuery(MENU, {
    variables: { myNumber }
  });
};

menu.ts

import gql from "graphql-tag";

export const MENU = gql`
  fragment MenuItemFields on MenuItem {
    field1
    field2
    field3
    field4
  }
  query Menu($myNumber: Float!) {
    menu(myNumber: $myNumber) {
      items {
        ...MenuItemFields
        items {
          ...MenuItemFields
          items {
            ...MenuItemFields
            items {
              ...MenuItemFields
            }
          }
        }
      }
    }
  }
`;

menu.test.ts

import { useQuery } from '@apollo/react-hooks';
import {httpResponse as mockMenuAPIString} from '../../../../../mocks/expectations/Storm-Hub-Menu/storm-hub-menu.json';
import {getEligibleMenuEntries} from '../../../../server/modules/graphql/utils';
import {useMenu} from '../../services/menu'

it('returns valid Menu', () => {
    // Convert mockMenuAPI to mockMenu

    const mockMenuAPI = JSON.parse(mockMenuAPIString.body);
    const mockMenu = getEligibleMenuEntries(mockMenuAPI);      //Working

    ... How do I mock the useQuery?
    
    const res = useMenu(10000);

    expect(res).toEqual(mockMenu);
});

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

В примере

Любая помощь приветствуется.

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