我喜欢用coffee-script编写单元测试,并使用mochajs作为框架。 我使用以下设置来配置mocha以使用coffee-script。
node ./node_modules/mocha/bin/mocha ./tests/ --compilers coffee:coffee-script/register --reporter spec
不幸的是,注册两个编译器不起作用。
node ./node_modules/mocha/bin/mocha ./tests/ --compilers coffee:coffee-script/register, js:babel-core/register --reporter spec
假设js文件将使用babel进行转换,而咖啡文件将使用coffee-script进行处理。但是没有缝合工作。
我的生产代码(我想测试)是用es6编写的,并在webpack中用babel编译。
我如何设置mocha以便从es6转换生产代码并可以在我的咖啡脚本测试中使用?
//修改
为了扩展问题并详细解释,我刚刚添加了一个样本
我在JS es6中有一个代码文件
//hello.js
const hello = (msg) =>{
return msg;
}
export default hello;
我的咖啡脚本测试看起来像这样
#test1.coffee
should = require "should"
hello = require "./hello"
describe "Given I have an es6 module",->
it "it should be possible to test it with mocha and coffeescript",->
a = hello
should.exist a
it "it should also print out the given message",->
msg = hello "world"
msg.should.eql "world
我的.babelrc看起来像这样
//.babelrc
{
"presets":["es2015"],
"plugins": ["transform-es2015-modules-commonjs"]
}
我的测试输出看起来像这样。
Given I have an es6 module
✓ it should be possible to test it with mocha and coffeescript
1) it should also print out the given message
1 passing (11ms)
1 failing
1) Given I have an es6 module it should also print out the given message:
TypeError: hello is not a function
at Context.<anonymous> (test1.coffee:10:11)
看起来hello.js模块已导入(必需),但不会转换为commonjs模块。
当我在console.log中你好 - &gt;我得到{ default: [Function: hello] }
我的测试是使用npm test test1.coffee
我目前来自packages.json的电话是:
"scripts": {
"test": "./node_modules/mocha/bin/mocha --compilers js:babel-core/register --require babel-polyfill --require coffee-script/register --reporter spec --recursive"
},
任何建议如何设置mocha即时编译es6并运行coffeescript测试将非常感激。