Estoy escribiendo una aplicación del lado del servidor con node.js y me gustaría incluir pruebas unitarias. Una cosa con la que estoy luchando es una buena forma de probar la unidad EventEmitter
y setInterval/setTimout
Prueba de unidad controlada por evento javascript
¿Qué opciones tengo para probar la unidad asincrónicamente en el lado del servidor javascript?
Soy consciente de que solo puedo conectar otro oyente al EventEmitter que es la función de prueba, pero ¿cómo puedo garantizar que la función de prueba se ejecute alguna vez? parte de la prueba unitaria es garantizar que se ejecute cada parte de la prueba de la unidad.
Podría usar setTimeout pero parece ser una solución hackosa.
Si ayuda aquí hay algún código de ejemplo que estoy tratando de probar.
...
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)
)
);
},
...
}
...
(emiten dará lugar a un evento)
[Editar]
empecé a leer algunas de las pruebas EvevntEmitter en https://github.com/ry/node/tree/master/test/simple y me ayuda a ver cómo hacer esto.
¿Has echado un vistazo a esta publicación de blog? http://debuggable.com/posts/unit-testing-with-node-js:4b647d40-34e4-435a-a880-3b04cbdd56cb – Tmdean
Sí, leí el blog, es útil pero solo cubre algunos puntos. Solo me acabo de dar cuenta de que la prueba no saldrá hasta que termine el ciclo. Esto todavía deja un fácil para una vez setTimeout y eventos de una vez. – Raynos
Ahora solo noté que el bloque de salida está con respecto a la prueba en lugar del servidor. Es una forma de ejecutar un bloque de código después de finalizar todas las acciones asincrónicas – Raynos