Почему этот тест использует ошибку Jest & react-test-renderer, потому что он пытается разобрать файл .graphql?

Я пытаюсь запустить простой тест, чтобы начать работу с Jest, и кажется, что он анализирует все приложение. На файл, в котором возникает ошибка, ссылается файл сервисов.

Если я не включу graphql в регулярное выражение для moduleNameMapper, Jest попытается проанализировать сам файл .graphql.

Когда файл app-container анализируется, graphql.js из apollo-client выдает ошибку, пытаясь проанализировать импортированный файл .graphql.

Изменить: если я помещу запросы в строку с помощью gql, эти ошибки прекратятся. Есть идеи по использованию импортированных запросов?

От package.json:

 "jest": {
    "testEnvironment": "jsdom",
    "transform": {
      "\\.(gql|graphql)$": "jest-transform-graphql",
      ".*": "babel-jest"
    },
    "modulePaths": [
      "<rootDir>/src/modules"
    ],
    "moduleFileExtensions": [
      "js"
    ],
    "moduleNameMapper": {
      "\\.(graphql|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|yml)$": "<rootDir>/src/__mocks__/fileMock.js"
    }
  }

веб-пакет-конфигурация:

loaders: [{
            test: /\.(sass|scss|css)$/,
            loader: LOCAL_ENV ? `style!${CSS_LOADERS}` : ExtractTextPlugin.extract(CSS_LOADERS)
        }, {
            test: /\.json$/,
            exclude: /node_modules/,
            loader: 'json'
        }, {
            test: /\.yml$/,
            exclude: /node_modules/,
            loader: 'json!yaml'
        }, {
            test: /\.js$/,
            exclude: /node_modules/,
            loader: 'babel'
        }, {
            test: /\.(jpe?g|png|gif)$/,
            exclude: /node_modules/,
            loader: 'url?limit=1000' // 1KB
        }, {
            test: /\.(graphql|gql)$/,
            exclude: /node_modules/,
            loader: 'graphql-tag/loader',
        }]

Тест:

import React from 'react';
import { Provider } from 'react-redux';
import renderer from 'react-test-renderer';
import services from 'app-system/services';

test('Component should render with a Provider', () => {
    const component = renderer.create(
        <Provider store={services.reduxStore}>
            <div>This is a test</div>
        </Provider>
    );

    const tree = component.toJSON();
    expect(tree.type).toBe('div');
});

Ошибка: FAIL src/app/tests/store.test.js ● Не удалось запустить набор тестов.

    TypeError: Cannot read property 'filter' of undefined

      at Object.parser (node_modules/react-apollo/lib/parser.js:12:41)
      at graphql (node_modules/react-apollo/lib/graphql.js:74:30)
      at Object.<anonymous> (src/app/modules/group/components/app-container/index.js:52:52)
      at Object.<anonymous> (src/app/modules/group/components/index.js:1:418)
      at Object.<anonymous> (src/app/modules/team/components/hello/index.js:2:45)
      at Object.<anonymous> (src/app/modules/team/components/index.js:1:378)
      at Object.<anonymous> (src/app/modules/team/index.js:1:209)
      at Object.<anonymous> (src/app/modules/system/register-modals.js:17:57)
      at Object.<anonymous> (src/app/modules/system/services.js:26:49)
      at Object.<anonymous> (src/app/__tests__/store.test.js:4:43)

Строка 74 от graphql.js:

var operation = parser_1.parser(document);

person Jazzy    schedule 16.02.2017    source источник


Ответы (1)


Я удалил расширения файла graphql из моего moduleNameMapper, и это сработало. Для всех, у кого есть похожая проблема, взгляните на вопрос выше и сделайте свой вопрос таким:

"moduleNameMapper": {
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|yml)$": "<rootDir>/src/__mocks__/fileMock.js",
      ...
    }
person Jazzy    schedule 16.02.2017