在Mocha测试中是否可以使用ES6模块?

5 浏览
0 Comments

在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。结果:

enter image description here

0