2017-09-29 3 views
1

ES6, Windows 10 x64, Node.js 8.6.0, Mocha 3.5.3Est-il possible d'utiliser des modules ES6 dans les tests Mocha?

Est-il possible d'utiliser des modules ES6 dans les tests Mocha? J'ai les problèmes avec les mots-clés export et 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; 
     } 
    } 
} 

test Mocha:

/* 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)); 
    }); 
    }); 
}); 

je lance le mocha directement via la console PowerShell. Le résultat:

enter image description here

+1

https://mochajs.org/#about-babel – robertklep

+0

http://jamesknelson.com/testing-in-es6- avec-mocha-et-babel-6/ – winseybash

+1

Je pense que le point est que le nœud 8.6 supporte l'import/export sans transpiration. Cependant, je ne suis pas sûr que mocha permette à '--experimental-modules' de l'utiliser, donc la transpilation est probablement encore nécessaire jusqu'à ce qu'elle le fasse (ou jusqu'à ce que le support soit stable) – CodingIntrigue

Répondre