Jest: Snapshot Test Import funktioniert nicht mit Babel-Preset

Erstellt am 15. Aug. 2016  ·  3Kommentare  ·  Quelle: facebook/jest

Ich versuche einen einfachen Snapshot-Test. Die Komponente, die ich teste, verwendet eine andere Komponente aus einem Modul. Der Test schlägt fehl, wenn versucht wird, dieses ungemockte Modul zu importieren mit:

Versagen

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)

Prüfen

'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();
  })
});

SetupView-Komponente

'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';
.
.
.

Paket.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"
    ]
  }

Zu Ihrer Information, ich habe eine .babelrc-Datei in meinem Stammverzeichnis, die auf das reaktive Preset verweist, und der Test wird ausgeführt, schlägt aber fehl, wenn ich Zeile 12 auskommentiere, da DataContainer definiert ist.

Hilfreichster Kommentar

Kannst du jest --no-cache versuchen? Wenn Sie Ihren babelrc vor dem letzten Aufruf geändert haben, aktualisieren wir den Cache möglicherweise nicht richtig.

Wenn das nicht funktioniert, erstellen Sie bitte ein Repo auf github, das ich npm installieren und npm testen kann, um Probleme zu beheben.

Tipp: Sie benötigen keine unmockedModulePathPatterns, wenn Sie das Reactive-native-Preset verwenden, da Automocking sowieso deaktiviert wird.

Alle 3 Kommentare

Kannst du jest --no-cache versuchen? Wenn Sie Ihren babelrc vor dem letzten Aufruf geändert haben, aktualisieren wir den Cache möglicherweise nicht richtig.

Wenn das nicht funktioniert, erstellen Sie bitte ein Repo auf github, das ich npm installieren und npm testen kann, um Probleme zu beheben.

Tipp: Sie benötigen keine unmockedModulePathPatterns, wenn Sie das Reactive-native-Preset verwenden, da Automocking sowieso deaktiviert wird.

Das hat bei mir nicht funktioniert. Es scheint, als ob das Problem beim Importieren des node_module react.datacontainer . Nachdem ich etwas mehr eingegraben habe, glaube ich, dass das Jest-Preset die in es6 geschriebenen node_modules nicht kompiliert.

Leider kann ich derzeit kein Repo erstellen. Aber wenn es weiter hilft, sehen Sie hier, wie das Modul 'react.datacontainer' aussieht. https://github.com/ForceDotComLabs/react.force.datacontainer

Sie können die Vorverarbeitung für dieses Modul über diese Konfigurationsoption aktivieren: http://facebook.github.io/jest/docs/tutorial-react-native.html#preprocessorignorepatterns -customization

Wenn Sie möchten, können Sie auch ein Issue auf der Github-Seite dieses Projekts erstellen, um sie aufzufordern, ihre Abhängigkeiten vorzukompilieren und Build-Dateien auf npm zu veröffentlichen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen