2017-02-16 2 views
0

Я пытаюсь запустить простой тест, чтобы разобраться с Jest, и похоже, что он разбирает все приложение. Файл, в котором возникает ошибка, ссылается на файл служб.Почему этот тест использует ошибку jest & response-test-renderer, потому что он пытается проанализировать файл .graphql?

Если я не включаю graphql в regex для moduleNameMapper Jest пытается разобрать файл .graphql.

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

Редактировать: Если я поставил запросы inline, используя 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-конфигурации:

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 ● Набор тестов не удалось запустить

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); 

ответ

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", 
     ... 
    } 
Смежные вопросы