我正在尝试运行一个简单的测试来使用 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);