0

我正在尝试运行一个简单的测试来使用 Jest,它似乎正在解析整个应用程序。服务文件引用了引发错误的文件。

如果我不包含graphqlmoduleNameMapperJest 的正则表达式中,则会尝试解析.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);
4

1 回答 1

1

我从我的 moduleNameMapper 中删除了 graphql 文件扩展名,它起作用了。对于其他有类似问题的人,请查看上面的问题并让您的问题看起来像:

"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",
      ...
    }
于 2017-02-16T07:17:03.797 回答