在Mocha测试中是否可以使用ES6模块?
在Mocha测试中是否可以使用ES6模块?
在Mocha测试中使用ES6模块是可能的吗?我在使用export和import关键字时遇到了问题。
/* eventEmitter.js
*/
/* 事件发射器。 */
export default class EventEmitter{
constructor(){
const subscriptions = new Map();
Object.defineProperty(this, 'subscriptions', {
enumerable: false,
configurable: false,
get: function(){
return subscriptions;
}
});
}
/* 添加事件监听器。
* @eventName - 事件名称。
* @listener - 监听器。
*/
addListener(eventName, listener){
if(!eventName || !listener) return false;
else{
if(this.subscriptions.has(eventName)){
const arr = this.subscriptions.get(eventName);
arr.push(listener);
}
else{
const arr = [listener];
this.subscriptions.set(eventName, arr);
}
return true;
}
}
/* 删除事件监听器。
* @eventName - 事件名称。
* @listener - 监听器。
*/
deleteListener(eventName, listener){
if(!eventName || !listener) return false;
else{
if(this.subscriptions.has(eventName)){
const arr = this.subscriptions.get(eventName);
let index = arr.indexOf(listener);
if(index >= 0){
arr.splice(index, 1);
return true;
}
else{
return false;
}
}
else{
return false;
}
}
}
/* 发射事件。
* @eventName - 事件名称。
* @info - 事件参数。
*/
emit(eventName, info){
if(!eventName || !this.subscriptions.has(eventName)) {
return false;
}
else{
for(let fn of this.subscriptions.get(eventName)){
if(fn) fn(info);
}
return true;
}
}
}
Mocha测试:
/* test.js
* Mocha测试。
*/
import EventEmitter from '../../src/js/eventEmitter.js';
const assert = require('assert');
describe('EventEmitter', function() {
describe('#constructor()', function() {
it('应该正常工作。', function() {
const em = new EventEmitter();
assert.equal(true, Boolean(em));
});
});
});
我直接通过PowerShell控制台启动mocha。结果: