2017-02-16 9 views
0

私はJestに行くために簡単なテストを実行しようとしています。アプリ全体を解析しているようです。エラーがスローされているファイルは、servicesファイルによって参照されます。Jest&react-test-rendererが.graphqlファイルを解析しようとしているためにエラーをスローしているため、このテストはなぜですか?

moduleNameMapperの正規表現にgraphqlが含まれていない場合、Jestはファイル.graphqlを解析しようとします。

ファイルapp-containerが解析されているときに、.graphqlファイルを解析しようとすると、apollo-clientのgraphql.jsがエラーをスローしています。

編集: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" 
    } 
    } 

のWebPACK-config設定:

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 /アプリ/ テスト/store.test。 js ●テストスイートgraphql.jsからライン74

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) 

を実行するために失敗しました:

var operation = parser_1.parser(document); 

答えて

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", 
     ... 
    } 
関連する問題