2017-02-08 6 views
1

Ich habe Probleme bei der Integration von Komponententests in einen bestimmten Ordner meines Projekts.Unerwarteter Token-Import mit Jest (babel-eslint nicht verfügbar von getesteter Datei, symlink env)

Meine Architektur ist wie folgt:

|_ shared 
|_ job-board 
|_ admin-panel 

job_board und Admin-Panel enthalten jeweils eine Symlink zu zeigen gemeinsam, bei ./client/src/shared und enthalten jeweils einen node_modules Ordner mit babel- Eslint installiert. shared enthält keinen Ordner node_modules und beruht auf den Knoten node_modules des anderen Ordners.

Mit dieser Architektur habe ich es geschafft, alle Werkzeuge zu konfigurieren, die ich benutze (Webpack, eslint, eslint-loader, ... aber Jest).

Das Problem ist, wenn ich eine * .test.js Datei in job_board/* oder admin_panel/*, babel-Scherz korrekt auf diese Datei zu erstellen, angewendet wird, aber wenn ich diese Datei in shared/*, babel-Scherz schaffen nicht angewendet wird (wie babel-Scherz in shared nicht verfügbar ist), wie der folgende Fehler beweist:

FAIL ..\shared\utils\tests\StringUtils.test.js 
● Test suite failed to run 
SyntaxError: Unexpected token import 

Hier ist mein Scherz-config.json Datei:

{ 
    "moduleFileExtensions": [ 
    "js" 
    ], 
    "moduleNameMapper": { 
    "\\.(css|scss)$": "identity-obj-proxy" 
    }, 
    "modulePaths": [ 
    "<rootDir>/client" 
    ], 
    "testPathDirs": [ 
    "<rootDir>", 
    "<rootDir>/../shared" 
    ], 
    "testRegex": "(\\.|/)test\\.jsx?$" 
} 

(Hinweis th bei I "<rootDir>/../shared" zu testPathDirs hinzuzufügen hatte, dass so * .test.js Dateien gefunden werden können)

Und meine .babelrc Datei:

{ 
    "plugins": [ 
    "transform-decorators-legacy", 
    "transform-object-rest-spread" 
    ], 
    "presets": [ 
    ["es2015", { "modules": false }], 
    "react", 
    "stage-0" 
    ], 
    "env": { 
    "development": { 
     "presets": [ 
     "react-hmre" 
     ] 
    }, 
    "test": { 
     "plugins": ["transform-es2015-modules-commonjs"] 
    } 
    } 
} 

Schließlich laufe ich meine Tests mit: node --harmony_proxies node_modules/jest-cli/bin/jest.js --config ./jest-config.json

Fehle ich etwas aus, oder ist das wirklich ein Mangel an einer Funktion, die die Möglichkeit gibt, eine "Wurzel" für babel-eslint oder etwas zu bieten?

Ich habe auch ein Problem auf dem Jest Repo geöffnet, aber es wurde geschlossen. So, hier bin ich!

Jest Konfiguration oben eingefügt.

Scherz-cli: 18.1.0

Knoten: 5.6.0

npm: 3.6.0

OS: Windows 10

Antwort

0

Für diejenigen, die an einem Workaround interessiert waren, habe ich eine Lösung gefunden, während ich die Quelldateien von babel-jest durchging. Erstelle einfach eine .babelrc im Stammverzeichnis deiner Repos und erweitere die echte.Also in meinem Fall:

{ 
    "extends": "./admin-panel/.babelrc" 
} 
0

Sieht aus wie Sie ein ähnliches Problem haben, sich mit this person.

Haben Sie in Ihrer .babelrc-Datei Folgendes versucht?

"env": { 
    "start": { 
    "presets": [ 
     "react-hmre" 
    ] 
    }, 
    "test": { 
    "presets": ["es2015", "react", "stage-0"], 
    "plugins": ["transform-es2015-modules-commonjs"] 
    } 
} 
+0

Ja, ich habe versucht, keine Änderung. Da ich webpack2 verwende, deaktiviere ich die Umwandlung von Modulen zu commonJS in dev/prod, aber aktiviere es in test env (siehe meine .babelrc). – Zephir77167