2014-11-30 23 views
19

Bu basit görevi yazmak istediğimi söylüyor. Ama onayladığınız bir test yazmak istiyorum:Düğümdeki olay yayıcıları nasıl test edilir

  1. Bu görev, nesneyi yayar.
  2. Nesnenin bir özellik adı vardır.

Ben mocha ve chai beklentisiyle test yapıyorum.

Şimdiden teşekkürler. Akla gelen her türlü varyantı denedim, ancak bir çözüm bulamadım.

var util = require('util'), 
    EventEmitter = require('events').EventEmitter; 

function SomeTask() { 
    var self = this; 

    setInterval(function() { 
    self.emit('data', { name: 'name' }); 
    }, 5000); 
} 

util.inherits(SomeTask, EventEmitter); 

module.exports = SomeTask; 

cevap

24

İşte casusları kullanan bir örnek. https://github.com/mochajs/mocha/wiki/Spies

var sinon = require('sinon'); 
var EventEmitter = require('events').EventEmitter; 

describe('EventEmitter', function(){ 
    describe('#emit()', function(){ 
    it('should invoke the callback', function(){ 
     var spy = sinon.spy(); 
     var emitter = new EventEmitter; 

     emitter.on('foo', spy); 
     emitter.emit('foo'); 
     spy.called.should.equal.true; 
    }) 

    it('should pass arguments to the callbacks', function(){ 
     var spy = sinon.spy(); 
     var emitter = new EventEmitter; 

     emitter.on('foo', spy); 
     emitter.emit('foo', 'bar', 'baz'); 
     sinon.assert.calledOnce(spy); 
     sinon.assert.calledWith(spy, 'bar', 'baz'); 
    }) 
    }) 
}) 
+1

Tnaks !!! Çok yardımcı oldu! – datogio

+0

"SUT" için iki olayı gereken sırada, yani ('data') 've' on ('end') 'de test etmek için nasıl gönderebilirim? – hellboy

İlgili konular