Mocha和ES6,意外的令牌(传播运营商)

时间:2018-01-18 15:40:51

标签: javascript node.js unit-testing mocha

我需要你的帮助。 我需要为我的项目编写单元测试(我们使用mocha和nyc来运行测试) 我运行mocha时遇到错误

const payload = { ...obj, vitality };
                      ^^^
SyntaxError: Unexpected token ...
    at createScript (vm.js:74:10)
    at Object.runInThisContext (vm.js:116:10)
    at Module._compile (module.js:533:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Volumes/linx/multichannel/optout/test/unit/controller/version.test.js:5:20)

这是我的功能

   const checkVitality = (req,res, obj, uuid) => {
      const vitality = Object.values(obj).reduce((accumulator, currentValue) => accumulator && currentValue ,true);
      const payload = { ...obj, vitality }; // <=======Syntax error
      logger.debug(`vitality check request`, uuid,100, payload);
      return payload;
   };

如果我运行代码,该函数被编译,但如果我运行测试我得到此错误。我试图连接BABEL但仍然有这个错误 感谢!

1 个答案:

答案 0 :(得分:0)

这里的问题是JavaScript的spread operator尚未成为正式规范的一部分。因此,您需要使用诸如babel之类的转译器。

有几种方法可以解决此问题,但是我建议您在@babel/register脚本中要求使用npm

您必须先通过运行以下命令安装依赖项:

npm install @babel/core --save-dev
npm install @babel/register --save-dev

然后将以下内容添加到您的package.json

{
   //...
   "scripts": {
      "test": "mocha --require @babel/register ./test/**/*.js"
   }
   //...
}