Нарушение инварианта: чтобы инициализировать клиент Apollo, необходимо указать свойства 'link' и 'cache' в объекте параметров в тестовом модуле - PullRequest
1 голос
/ 16 февраля 2020

У меня есть следующий файл .jsx, который возвращает от него клиентский объект apollo:

import { createAppSyncLink } from "aws-appsync";
import { ApolloClient } from "apollo-client";
import { InMemoryCache } from "apollo-cache-inmemory";
import { ApolloLink } from "apollo-link";
import { appSyncConfig } from "./client/AwsConfig";
import { fragmentMatcher } from "./client/apollo-cache";

// AppSync link
const awsAppSyncLink = createAppSyncLink({
    url: appSyncConfig.graphqlEndpoint,
    region: appSyncConfig.region,
    auth: {
        type: appSyncConfig.authenticationType,
        apiKey: appSyncConfig.apiKey
    }
});

const links = [awsAppSyncLink];

const apolloLink = ApolloLink.from(links);

export default new ApolloClient({
    cache: new InMemoryCache({ fragmentMatcher }),
    link: apolloLink
});

Теперь я пытаюсь запустить тест для этого файла следующим образом, используя jest:

import { createAppSyncLink } from "aws-appsync";
import { ApolloLink } from "apollo-link";

jest.mock("aws-appsync");
jest.mock("apollo-link");

describe("GraphQL client", () => {

    it("should create a client", () => {
        const client = require("../src/a").default;

        console.log(client);

        expect(client).toBeDefined();
    });
});

Но я получаю следующую ошибку:

FAIL tst / a.test. js ● Клиент GraphQL ›должен создать клиент

Invariant Violation: In order to initialize Apollo Client, you must specify 'link' and 'cache' properties in the options object.
These options are part of the upgrade requirements when migrating from Apollo Client 1.x to Apollo Client 2.x.
For more information, please visit: https://www.apollographql.com/docs/tutorial/client.html#apollo-client-setup

  26 | const apolloLink = ApolloLink.from(links);
  27 |
> 28 | export default new ApolloClient({
     |                ^
  29 |     cache: new InMemoryCache({ fragmentMatcher }),
  30 |     link: apolloLink
  31 | });

  at new InvariantError (node_modules/ts-invariant/lib/invariant.esm.js:12:28)
  at new ApolloClient (node_modules/apollo-client/bundle.umd.js:2484:92)
  at Object.<anonymous> (src/a.jsx:28:16)
  at Object.<anonymous> (tst/a.test.js:10:24)

Я довольно новичок в тестировании в Javascript и использовании шутки. Если кто-то может помочь мне в написании контрольного примера для этого файла, было бы здорово, и как вы об этом go?

...