使用Intern v4测试ES2015类

时间:2017-12-04 17:01:22

标签: javascript unit-testing intern

如何使用Intern v4导入我的类并编写单元测试。我一直遇到错误 SyntaxError:Unexpected token import

单元测试文件demo.js:

import Demo from '../../app/demo.js';

const { suite, test } = intern.getInterface('tdd');
const { assert } = intern.getPlugin('chai');
const { expect } = intern.getPlugin('chai');

Demo.js课程:

class Demo{
  constructor(){

  }

  print(){
    console.log(`hello world`);
  }

}

export default {Demo};

2 个答案:

答案 0 :(得分:3)

JS的模块系统(导入/导出)尚未被许多环境本地支持。要使用该语法,您需要使用SystemJS等模块加载器或babel-register(请参阅文档中的this page)。

Intern 4的大多数示例都假设测试是用TypeScript编写的,然后构建到CommonJS或AMD / UMD模块。

答案 1 :(得分:1)

与@ jason0x43一样,您必须使用加载程序加载ESModule进行测试。 例如,使用babel-register,在你的intern.json文件中,你需要:

"plugins": [
    "node_modules/babel-register/lib/node.js"
]

但是这并没有加载你的测试文件。因此,如果您的测试文件也是ESModules,则可以将babel-plugin-transform-es2015-modules-commonjsbabel-register结合使用。

babel-register已由intern加载,因此只需添加.babelrc文件:

{
    "plugins": [
        "transform-es2015-modules-commonjs"
    ]
}