Как тестировать запросы GraphQL с фрагментами, используя шутку - PullRequest
0 голосов
/ 31 мая 2018

Проблема: я хотел бы протестировать запрос GraphQL, который находится в файле .graphql, например:

#import '../../fragments/Widget.graphql'

query WidgetFragment($id: ID) {
    readWidgetFragment(id: $id) {
        ...Widget
    }
}

Чтобы создать схему GraphQL с проверенными резольверами и данными, я использую makeExecutableSchema иaddMockFunctionsToSchema из graphql-tools .

Чтобы выполнить запрос изнутри шутного теста, я понимаю, что мне нужно использовать функцию graphql() из graphql-js.

Эта функция нуждается в запросе в виде строки , поэтому я попробовал два разных способа, но ни один из них не сработал:

  • Синтаксический анализ .graphql файл в виде обычного текстового файла, в котором содержится необработанная строка (с помощью jest-raw-loader в моей конфигурации jest).Это дает мне: Failed: Errors in query: Unknown fragment "Widget". при выполнении запроса.
  • Анализ файла .graphql в объект query с использованием jest-transform-graphql .Я считаю, что это должен быть правильный подход, потому что должен правильно разрешать любые импортированные фрагменты.Однако для выполнения запроса мне нужно передать query.loc.source.body в graphql, что приведет к тому же сообщению об ошибке, что и в варианте 1.

1 Ответ

0 голосов
/ 19 декабря 2018

Вы можете использовать это:

import { print } from 'graphql/language/printer'

import query from './query.gql'

...

print(query)
...