0
私は2つのファイルを持っています。node.jsのイベントエミッタを使用して刺激を受けるクラス内で関数をモックできません
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
};
:
'use strict';
var EventEmitter2 = require('eventemitter2').EventEmitter2;
var m = new EventEmitter2({
newListener: false,
maxListeners: 20
});
m.ACTIVITY_EVENT = 'activityEvent';
module.exports = m;
エンドポイントをテストするテスト・クラスを作成しました。
var listener = require('../listener');
var events = require('../g-events');
describe('test listener', function() {
listener.start = function() {
console.log('fake start');
};
it('test listener', function() {
events.emit(events.ACTIVITY_EVENT);
});
});
テストが実行されると、出力は「私はここにあります」、次に「開始」です。 私のテストで定義された開始関数を適切にオーバーライドしないのはなぜですか?
テスト関数 'listener.start'の中で、' listerner.js'の 'module.exports'オブジェクトを参照して、オブジェクトプロパティを変更するだけです。 'listener.js'の' start() '関数ではありません – zeronone
startメソッドをスタブする適切な方法は何ですか? 私の最終目標はsinonを使用してそれをスタブしています。 – neelzp