2017-10-21 32 views
1

Je suis nouveau sur jest. Je rencontre l'erreur sur le cercle CI. Mon fichier setup.js a la syntaxe ES6. Puisque le fichier sur setupTestFrameworkScriptFile sera exécuté chaque fois que chaque test est exécuté, j'ai pensé que je pourrais utiliser la syntaxe ES6 mais babel-jest ne le transpira pas. Des tests réguliers tels que des tests unitaires pour les composants réactifs sont effectués. Sur l'environnement local, le fichier d'installation est tranpilé.Jest setupTestFrameworkScriptFile ou setupFiles Syntaxe ES6

SyntaxError: Unexpected token { 

     at ScriptTransformer._transformAndBuildScript (node_modules/jest/node_modules/jest-cli/node_modules/jest-runtime/build/script_transformer.js:305:17) 
     at Object.<anonymous> (test/setup.js:1:869) 
     at next (native) 

Mon fichier de configuration jest ressemble à ceci.

{ 
    "verbose": true, 
    "transform": { 
    "^.+\\.(js|jsx)$": "babel-jest" 
    }, 
    "transformIgnorePatterns": [ 
    "node_modules/(?!my-module)" 
    ], 
    "snapshotSerializers": [ 
    "jest-serializer-enzyme" 
    ], 
    "setupTestFrameworkScriptFile": "<rootDir>/test/setup.js", 
    "globals": { 
    "__PROD__": false, 
    "__STG__": false 
    }, 
    "moduleDirectories": [ 
    "node_modules" 
    ], 
    "testRegex": "(/__tests__/.*|__test__.js)$", 
    "moduleFileExtensions": [ 
    "css", 
    "jsx", 
    "js", 
    "scss", 
    "svg" 
    ], 
    "moduleNameMapper": { 
    "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/test/fileMock.js", 
    "^.+\\.(css|less|scss)$": "<rootDir>/test/styleMock.js" 
    } 
} 

Ai-je oublié des paramètres?

+0

Comment faites-vous vos tests? Les dernières versions de Node supportent nativement ES6 (à l'exception de la syntaxe du module bien sûr). –

Répondre

1

Jest ne pousse pas le script setup.js à travers l'étape de transpiration. Jest transpile votre code de test, puis exécute votre script d'installation sans transpiration, puis exécute votre code de test. Il suffit de l'écrire dans la syntaxe ES5 et cela fonctionnera.