Jest: La importación de prueba de instantáneas no funciona con babel-preset

Creado en 15 ago. 2016  ·  3Comentarios  ·  Fuente: facebook/jest

Estoy probando una simple prueba de instantáneas. El componente que estoy probando usa otro componente de un módulo. La prueba falla al intentar importar este módulo no simulado con:

Falla

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)

Prueba

'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 su información, tengo un archivo .babelrc en mi directorio raíz que apunta al preajuste nativo de reacción y la prueba se ejecuta pero falla si comento la línea 12 ya que DataContainer no está definido.

Comentario más útil

¿Puedes probar jest --no-cache ? Si cambió su babelrc antes de la última invocación, es posible que no actualicemos la caché correctamente.

Si eso no funciona, cree un repositorio en github que pueda instalar npm y probar npm para solucionar problemas.

Sugerencia: no necesita unmockedModulePathPatterns cuando use react-native-preset porque el automontaje estará deshabilitado de todos modos.

Todos 3 comentarios

¿Puedes probar jest --no-cache ? Si cambió su babelrc antes de la última invocación, es posible que no actualicemos la caché correctamente.

Si eso no funciona, cree un repositorio en github que pueda instalar npm y probar npm para solucionar problemas.

Sugerencia: no necesita unmockedModulePathPatterns cuando use react-native-preset porque el automontaje estará deshabilitado de todos modos.

Eso no funcionó para mí. Parece que el problema está en la importación de node_module react.datacontainer . Después de profundizar un poco más, creo que el ajuste preestablecido de broma no es compilar los node_modules escritos en es6.

Desafortunadamente, no puedo crear un repositorio en este momento. Pero si ayuda más, así es como se ve el módulo 'react.datacontainer'. https://github.com/ForceDotComLabs/react.force.datacontainer

Puede habilitar el preprocesamiento para este módulo a través de esta opción de configuración: http://facebook.github.io/jest/docs/tutorial-react-native.html#preprocessorignorepatterns -customization

Si lo desea, también puede crear un problema en la página de github de este proyecto para pedirles que precompilen sus dependencias y publiquen archivos de compilación en npm.

¿Fue útil esta página
0 / 5 - 0 calificaciones