Реакция тестирования Компонент высшего порядка с запросом Apollo @client (версия Apollo меньше 2.5) - PullRequest
0 голосов
/ 07 марта 2019

У меня проблемы с тестированием компонента HoC, который выполняет gql-запрос и добавляет результат как опору.Компонент работает, потому что я тестировал его вручную, но у меня возникают проблемы с издевательством над запросом.Это версия apollo до 2.5, поэтому другие запросы @client работают.

Это мой Hoc

export const GET_CONFIG = gql`
  {
    config @client,
  }
`;

/**
 * This HoC wraps a component adding to it the current site configuration stored in Apollo.
 * It should be used for every component which needs to access the configuration.
 *
 * @param Component
 * @returns The Component wrapped with the config prop
 */
export const withConfig = Component => props => (
  <Query
    query={GET_CONFIG}
    >
    {({loading, error, data}) => {
        console.log(data);
      return (
        <Component config={JSON.parse(data.config)} {...props} />
      );
    }

    }
  </Query>
);

testComponent

const TestComponent = () => (
  <div>test</div>
)

export default withConfig(TestComponent);

мой тест:

describe('withConfig', () => {

  const mockData = () => [
    {
      request: {
        query    : GET_CONFIG
      },
      result: {
        data: {
          config: 'jjjjjjj',
        },
      },
    },
  ];


  it('should pass extra props to provided component', async () => {
    const wrapper = renderer.create(
      <MockedProvider mocks={mockData()} addTypename={false}>
        <TestComponent />
      </MockedProvider>,
    );
    await wait(0);
    expect(wrapper.toJSON()).toMatchSnapshot();
  });

});

Проблема в том, что смоделированный запрос не 'не возвращает ожидаемое «ggggg», но возвращает пустой объект, поэтому тест завершается неудачно с ошибкой синтаксического анализа JSON

SyntaxError: Unexpected token u in JSON at position 0
    at JSON.parse (<anonymous>)

  23 |         console.log(data);
  24 |       return (
> 25 |         <Component config={JSON.parse(data.config)} {...props} />
     |                                 ^
  26 |       );
  27 |     }
  28 |

Есть идеи?

...