如何在我的摩卡测试中结合咖啡脚本使用babel

时间:2016-07-18 20:27:20

标签: javascript coffeescript ecmascript-6 mocha babeljs

我喜欢用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测试将非常感激。

0 个答案:

没有答案