mercredi 22 juillet 2020

Cannot read property 'getRequest' of undefined when testing react-relay

I am trying to test react-relay for GraphQL using the (incomplete) guide at https://relay.dev/docs/en/testing-relay-components#fragment-container-tests.

I have the following:

'use strict';

import React from 'react';
import { QueryRenderer, graphql } from 'react-relay';
import ReactTestRenderer from 'react-test-renderer';
//const ReactTestRenderer = require('react-test-renderer'); // same error
//import { create } from "react-test-renderer"; // same error

const {
  createMockEnvironment,
  MockPayloadGenerator,
} = require('relay-test-utils');

it('Fragment Container', () => {
  const environment = createMockEnvironment();
  const TestRenderer = () => (
    <QueryRenderer
      environment={environment}
      query={graphql`
        query TestQuery @relay_test_operation {
          myData: node(id: "test-id") {
            ...MyFragment
          }
        }
      `}
      variables=
      render={({error, props}) => {
        if (props) {
          return <MyFragmentContainer myData={props.myData} />;
        } else if (error) {
          return error.message;
        }
        return 'Loading...';
      }}
    />
  );

  const renderer = ReactTestRenderer.create(<TestRenderer />);
  environment.mock.resolveMostRecentOperation(operation =>
    MockPayloadGenerator.generate(operation),
  );

  expect(renderer).toMatchSnapshot();
});

I'm not really sure where I'm going wrong and am new to React, React-Relay and GraphQL. I get: TypeError: Cannot read property 'getRequest' of undefined on the line for const renderer = ReactTestRenderer.create(<TestRenderer />);. I've tried to change the way I've imported ReactTestRenderer as suggested here but still get the same error. I installed react-test-renderer via npm i react-test-renderer

Aucun commentaire:

Enregistrer un commentaire