使用babel-node和babel-istanbul运行mocha测试时加载css时出错

Tab*_*dah 7 sass mocha.js webpack babeljs

我在测试使用webpack导入.scss的UI组件时遇到问题.我正在直接测试组件代码,而不是导出的webpack包.

在我的SUT中

我有一些导入scss的代码:

import '!style!css!sass!postcss-loader!../style.scss'
Run Code Online (Sandbox Code Playgroud)

运行测试时,此代码会导致错误:

Error: Cannot find module '!style!css!sass!postcss-loader!../../stylesheets/parts/Breadcrumbs.scss'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:286:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
Run Code Online (Sandbox Code Playgroud)

廉价的解决方法

我一直在解决这个问题:

try {
    require('!style!css!sass!postcss-loader!../style.scss');
} catch(err) { console.log('Not webpack'); }
Run Code Online (Sandbox Code Playgroud)

但这闻起来很脏,我宁愿在我的SUT中没有这个代码.

运行测试

在使用babel-nodebabel-istanbul而不是直接使用mocha 时,我无法弄清楚如何在我找到的解决方案中工作.这是我目前正在运行测试的方式:

$ babel-node babel-istanbul cover _mocha -- --require ./test/setup.js --recursive 
Run Code Online (Sandbox Code Playgroud)

我找到的所有答案都是直接用于摩卡,但我没有运行测试:

$ mocha --compilers js:babel-core/register --require ./test/setup.js --recursive
Run Code Online (Sandbox Code Playgroud)

我如何在编译器或设置文件中工作,告诉mocha忽略.scss文件.我肯定会在.svg文件旁边遇到这个问题.

Nic*_*las 2

github.com/css-modules/css-modules-require-hook怎么样,或者如果你想忽略 css npmjs.com/package/ignore-styles

编辑:如果您安装忽略样式模块然后运行:

babel-node babel-istanbul cover _mocha -- --require ./test/setup.js --require node_modules/ignore-styles --recursive 
Run Code Online (Sandbox Code Playgroud)

我确信它会起作用,请记住,假设您的项目根目录中有node_modules,您可能需要更改路径node_modules/ignore-styles。