我的Javascript代码库基于新的ES6 Modules。
所以我有这样的Javascript文件,例如:
export class MyClass {
constructor() {
this.list = [];
}
add(el) { this.list.push(el); }
}
作为一个模块,我将此文件导入其他Javascript文件,如下所示:
import * as lists from "./myclass";
在HTML页面中,必须使用以下语法:
<script src="myclass.js" type="module"></script>
我需要一个测试代码的框架。问题是我使用的是Javascript 6模块,因此像karma这样的现代框架在导入文件时不会出现问题:
module.exports = function(config) {
config.set({
files: [
'src/**/*.js',
'test/**/*.js'
],
...
})
}
以上是karma.conf.js
的示例。在Karma的特定情况下,运行器不会将文件作为模块导入,因此页面中的注入失败。
我可以使用哪些单元测试框架来测试Javascript 6模块?
答案 0 :(得分:2)
我使用Mocha和Babel的组合--Babel将ES6模块转换为Mocha可以使用的代码,因此您可以在测试文件中使用import
。
使用Babel开发者运行mocha:
mocha --compilers js:babel-core/register --recursive test/*
我非常确定其他框架也有类似的解决方案。
答案 1 :(得分:1)
答案 2 :(得分:0)
我不确定Jest是否真的支持模块,对吧?即我想要我的测试文件..那些带有断言的..能够导入同样导入其他模块的模块。
使用基于节点的测试框架似乎是最好的,我认为可能就是所有这些,我们是非常糟糕的babel / webpack特技,我真的不想使用它。
无头的Chrome肯定有趣,Puppeteer也是如此。