在摩卡testing中可以使用ES6模块吗?
ES6,Windows 10 x64,Node.js 8.6.0,摩卡3.5.3
在摩卡testing中可以使用ES6模块吗? 我有export
和import
关键字的问题。
/* eventEmitter.js */ /* Event emitter. */ export default class EventEmitter{ constructor(){ const subscriptions = new Map(); Object.defineProperty(this, 'subscriptions', { enumerable: false, configurable: false, get: function(){ return subscriptions; } }); } /* Add the event listener. * @eventName - the event name. * @listener - the 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; } } /* Delete the event listener. * @eventName - the event name. * @listener - the 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; } } } /* Emit the event. * @eventName - the event name. * @info - the event argument. */ 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; } } }
摩卡testing:
/* test.js * Mocha tests. */ import EventEmitter from '../../src/js/eventEmitter.js'; const assert = require('assert'); describe('EventEmitter', function() { describe('#constructor()', function() { it('should work.', function() { const em = new EventEmitter(); assert.equal(true, Boolean(em)); }); }); });
我直接通过PowerShell控制台启动mocha
。 结果:
这可能与Babel和Browserfy https://drublic.de/blog/es6-modules-using-browserify-mocha/