Sto scrivendo un'applicazione server-side con node.js e vorrei includere i test unitari. Una cosa con cui sto combattendo è un buon modo per testare l'unità EventEmitter
e setInterval/setTimout
Unit test event javascript
Quali opzioni devo eseguire per testare il lato server asincrono sul lato javascript?
Sono consapevole che posso semplicemente collegare un altro listener all'EventEmitter che è la funzione di test, ma come posso garantire che la funzione di test venga mai eseguita? parte del test dell'unità è garantire che ogni parte del test dell'unità funzioni.
Potrei usare setTimeout da solo ma sembra una soluzione furba.
Se qui è utile un codice di esempio che sto tentando di testare.
...
function init(param) {
...
// run update entities periodically
setInterval(this._updateEntities.bind(this, param.containerFull),
1000/param.fps);
...
}
...
EntityUpdater.prototype = {
...
"_updateEntities": function updateEntitiesfunc(fn) {
this._tickEmitter.emit(
"tick",
new dataContainer.DataContainer(this.getEntityCount())
.on(
"full", fn.bind(this)
)
);
},
...
}
...
(Emit attiverà un evento)
[Edit]
ho iniziato a leggere alcuni dei test EvevntEmitter a https://github.com/ry/node/tree/master/test/simple e mi aiuta a vedere come fare per questo.
Hai dato un'occhiata a questo post del blog? http://debuggable.com/posts/unit-testing-with-node-js:4b647d40-34e4-435a-a880-3b04cbdd56cb – Tmdean
Sì, ho letto il blog, è utile ma copre solo alcuni punti. Ho appena notato che il test non terminerà correttamente fino al termine del ciclo. Questo lascia ancora una volta facile setTimeout ed eventi una tantum. – Raynos
Ho solo notato che il blocco di uscita è rispetto al test piuttosto che al server. È un modo per eseguire un blocco di codice al termine di tutte le azioni asincrone – Raynos