Jest: A importação de teste de instantâneo não funciona com o babel-preset

Criado em 15 ago. 2016  ·  3Comentários  ·  Fonte: facebook/jest

Estou tentando um teste simples de instantâneo. O componente que estou testando usa outro componente de um módulo. O teste falha ao tentar importar este módulo desbloqueado com:

Fracasso

Using Jest CLI v14.1.0, jasmine2, babel-jest, jest-react-native preset
 FAIL  js/app/SetupView/__tests__/SetupView-test.js (0s)
 Runtime Error
  - SyntaxError: Unexpected reserved word
        at transformAndBuildScript (../../../../../usr/local/lib/node_modules/jest-cli/node_modules/jest-runtime/build/transform.js:306:10)
        at Object.<anonymous> (js/app/SetupView/index.js:12:17)
        at Object.<anonymous> (js/app/SetupView/__tests__/SetupView-test.js:11:12)
1 test suite failed, 0 tests passed (0 total in 1 test suite, run time 2.419s)

Teste

'use strict';
import 'react-native';
import React from 'react';

import SetupView from '../index';

import renderer from 'react-test-renderer';

describe('SetupView', ()=> {
  it('renders correctly', ()=>{
    const tree = renderer.create(
      <SetupView/>
    ).toJSON();
    expect(tree).toMatchSnapshot();
  })
});

Componente SetupView

'use strict';

import React from 'react';
import {
  View,
  Text,
  TouchableHighlight,
  Image,
  Animated,
} from 'react-native';

import DataContainer from 'react.datacontainer'; //<---fails here
import DashboardSettings from './DashboardSettings';
.
.
.

package.json

"jest": {
    "globals": {
      "__DEV__": true
    },
    "collectCoverage": false,
    "verbose": true,
    "preset": "jest-react-native",
    "modulePathIgnorePatterns": [
      "node_modules/react-native/node_modules/yeoman-generator",
      "node_modules/react-native/node_modules/fbjs"
    ],
    "unmockedModulePathPatterns": [
      "react.datacontainer",
      "react.data",
      "react.base.theme",
      "react.layout"
    ]
  }

Para sua informação, tenho um arquivo .babelrc em meu diretório raiz apontando para a predefinição react-native e o teste é executado, mas falha se eu comentar a linha 12, já que DataContainer é indefinido.

Comentários muito úteis

Você pode tentar jest --no-cache ? Se você alterou seu babelrc antes da última invocação, podemos não atualizar o cache adequadamente.

Se isso não funcionar, crie um repositório no github para que eu possa instalar o npm e testar o npm para solucionar o problema.

Dica: você não precisa desbloquearModulePathPatterns ao usar o react-native-preset porque o automocking será desabilitado de qualquer maneira.

Todos 3 comentários

Você pode tentar jest --no-cache ? Se você alterou seu babelrc antes da última invocação, podemos não atualizar o cache adequadamente.

Se isso não funcionar, crie um repositório no github para que eu possa instalar o npm e testar o npm para solucionar o problema.

Dica: você não precisa desbloquearModulePathPatterns ao usar o react-native-preset porque o automocking será desabilitado de qualquer maneira.

Isso não funcionou para mim. Parece que o problema está na importação do node_module react.datacontainer . Depois de aprofundar um pouco mais, acredito que a predefinição de brincadeira não é compilar os node_modules escritos em es6.

Infelizmente, não posso criar um repositório no momento. Mas se ajudar ainda mais, aqui está a aparência do módulo 'react.datacontainer'. https://github.com/ForceDotComLabs/react.force.datacontainer

Você pode habilitar o pré-processamento para este módulo por meio desta opção de configuração: http://facebook.github.io/jest/docs/tutorial-react-native.html#preprocessorignorepatterns -customization

Se desejar, você também pode criar um problema na página do github deste projeto para solicitar que pré-compilem suas dependências e publiquem arquivos de construção no npm.

Esta página foi útil?
0 / 5 - 0 avaliações