2016-04-28 9 views
0

Ich habe 2 Dateien.Kann die Funktion innerhalb einer Klasse, die über den Ereignisemitter in node.js stimuliert wird, nicht ausspionieren.

listener.js:

'use strict';  
var events = require('./g-events');  
function start() { 
    console.log('starting'); 
} 

events.on(events.ACTIVITY_EVENT, function() { 
    console.log('i am in here'); 
    start(); 
}); 

// Public functions 
module.exports = { 
    start: start 
}; 

mit Ereignissen wie folgt definiert:

'use strict'; 
var EventEmitter2 = require('eventemitter2').EventEmitter2; 

var m = new EventEmitter2({ 
    newListener: false, 
    maxListeners: 20 
}); 
m.ACTIVITY_EVENT = 'activityEvent'; 
module.exports = m; 

eine Testklasse geschaffen, die den Endpunkt testet.

Wenn der Test läuft, ist die Ausgabe "ich bin hier" und dann "Start". Warum überschreibt es nicht ordnungsgemäß die in meinem Test definierte Startfunktion?

+0

Innerhalb Ihrer Testfunktion bezieht sich 'listener.start' auf das' module.exports' Objekt von 'listner.js', das Ändern wird nur die Objekteigenschaft modifizieren; nicht die 'start()' -Funktion in 'listener.js' – zeronone

+0

Was ist der richtige Weg, um die Startmethode auszugeben? Mein Endziel ist es mit Sinon auszudrücken. – neelzp

Antwort

0

Selbst mit Sinon, um die Methode auszugeben, bewertete es immer noch die ursprüngliche Methode.

Ich stolperte nach Neuverkabelung https://github.com/jhnns/rewire zu tun, was ich wollte, obwohl ich nicht ganz sicher bin, warum Sinon war nicht in der Lage, eine exportierte Methode auszugeben.

Verwandte Themen