Gérer les importations CSS WebPack lors du test avec Mocha et Babel

Lorsque vous testez les fichiers .js qui ont des importations de CSS Webpack, import './style.css' , Mocha lance une erreur de syntaxe (car elle tente d'importer et d'analyser le fichier CSS en tant que JS). Il y a une solution qui a déjà été publiée sur Stack Overflow , mais elle ne concerne que si vous n'utilisez pas déjà un compilateur avec Mocha. J'utilise Babel 5. J'ai essayé ce qui suit, mais il semble que Mocha ne supporte pas le passage de plusieurs compilateurs:

 // npm test script mocha ./src/**/*Test.js --compilers css:./scripts/mocha-webpack-compiler.js js:babel/register // scripts/mocha-webpack-compiler.js function noop() { return null; } require.extensions['.css'] = noop; 

Existe-t-il un moyen d'avoir plusieurs compilateurs Mocha, ou une meilleure façon de dire à Mocha de ne pas essayer d'analyser les importations CSS Webpack?


MODIFIER:

J'aime la solution proposée par @Giles B ci-dessous; C'était exactement ce dont j'avais besoin. Cependant, comme je suis toujours sur Babel 5, j'avais besoin de quelques ajustements comme indiqué ci-dessous:

Mocha.opts

 --require scripts/support/babelhook --require scripts/support/mocha-webpack-compiler 

Scripts / babelhook.js

 require('babel/register'); 

Scripts / mocha-webpack-compiler.js

 function noop() { return null; } require.extensions['.css'] = noop; 

Mocha script

 mocha ./src/**/*Test.js 

Cela fonctionne pour moi en utilisant babel et babel-core , la version 5.8.23 .

J'ai rencontré le même problème et je l'ai fait fonctionner, alors, dans mon fichier mocha.opts, j'ai ajouté les appels require suivants:

 --require test/babelhook --require test/css-null-compiler 

Dans babelhook.js j'ai une déclaration babelhook.js pour charger babel:

 // This file is required in mocha.opts // The only purpose of this file is to ensure // the babel transpiler is activated prior to any // test code, and using the same babel options require("babel-register")(); 

Ensuite, à partir du lien que vous avez fourni, j'ai configuré css-null-compiler.js comme suit:

 // Prevent Mocha from compiling class function noop() { return null; } require.extensions['.css'] = noop; require.extensions['.scss'] = noop; 

J'espère que cela pourra aider.

Sur la base de la réponse @Giles ci-dessus, c'est ce que j'avais l'habitude de travailler sur Babel 6

Package.json

 "scripts": { "test": "mocha --compilers js:babel-core/register --require ./tools/testHelper.js 'src/**/*-spec.@(js|jsx)'", 

Tools / testHelper.js

 // Prevent mocha from interpreting CSS @import files function noop() { return null; } require.extensions['.css'] = noop; 

Cela vous permet d'effectuer vos tests dans votre dossier src à côté de vos composants.