TDD. Long Polling y Event Driven App

61 views
Skip to first unread message

Gabriel Osorio

unread,
Feb 23, 2013, 5:44:39 PM2/23/13
to altnet-...@googlegroups.com
Buenas tardes a todos,

Ya tomé la píldora roja de TDD. Sin embargo me falta mucho camino, menos el del convencimiento de sus bondades.

He estado leyendo sobre long polling, comet, websockets... etc... y Socket.io. Como Node.js tiene tan buena fama, parece la mejor opción para desarrollar un servidor push de eventos; además de tener un cliente para Redis.

Como hacer TDD con todo eso?

Gracias
Gabriel

Angel Java Lopez

unread,
Feb 23, 2013, 6:22:45 PM2/23/13
to altnet-...@googlegroups.com
Hola gente!

Gabriel, no entendi del todo tu caso de uso... pero veamos.

Yo prefiero una herramienta que ejecute desde la consola, generalmente
configurando el script test de package.json y ejecutando entonces

npm test

cuando hago TDD. Se puede configurar para ejecute otros tipos de tests.

Cuando no necesito probar cosas asincronicas, soy minimalista y uso el
modulo assert. Ejemplo, en mis:

https://github.com/ajlopez/SimpleSudoku
https://github.com/ajlopez/CobolScript
y otros

Uso un
https://github.com/ajlopez/SimpleSudoku/blob/master/test.js
el autor original esta en el codigo. Recorre los .js de un directorio
y los ejecuta.

Necesitaras algun framework de test que te simplifique el test de lo
asincronico. Ver como uso nodeunit en una especie de service bus (los
commits son casi por test) y una especie de Storm a la Java;

https://github.com/ajlopez/SimpleBus
https://github.com/ajlopez/SimpleStorm

Ahi esta el caso de tener un cliente y un servidor conversando por TCP sockets.

No tengo de Socket.io publicado directamente. Cuando tuve que hacerlo, use QUnit

http://ajlopez.wordpress.com/2011/12/19/social-games-programming-part-6-testing-game-and-service-with-tdd-and-qunit/

En ese articulo, la comunicacion del cliente juego con el servidor,
que recuerde, era Ajax. Se hizo con TDD. Luego, cuando hubo que
refactorizar a Node.js Socket.IO

http://ajlopez.wordpress.com/2012/01/09/social-games-programming-part-8-adding-node-js/

salio con fritas ;-)

Nos leemos!

Angel "Java" Lopez
@ajlopez
gh:ajlopez

2013/2/23 Gabriel Osorio <ge.e...@gmail.com>:
> --
> Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de
> Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus correos
> electrónicos, envía un correo electrónico a
> altnet-hispan...@googlegroups.com.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> altnet-...@googlegroups.com.
> Visita este grupo en http://groups.google.com/group/altnet-hispano?hl=es.
> Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
>
>

José F. Romaniello

unread,
Feb 23, 2013, 6:22:48 PM2/23/13
to altnet-...@googlegroups.com

Si vas a subscribir en el browser te recomiendo socket.io que hace fallbacks de protocolos al igual que signalr en .net. Si es solo server side quizas long polling.

Para tests en node uso mocha y chai.

Socket.io tiene un cliente que puede correr en node con lo cual es bastante sencillo hacer tests en donde levantas un server y lo bajas al terminar los tests. Podes consultar los tests de mi proyecto passport.socketio en github.

Hacer pruebas mas unitarias en node es bastante sencillo, poca gentr usa frameworks de mock.. Etc

Aranca y preguntame mas puntualmente luego si queres

Gabriel Osorio

unread,
Feb 24, 2013, 12:09:31 PM2/24/13
to altnet-...@googlegroups.com
Gracias por sus respuestas, voy a darle una buena mirada a los links. Si tengo problemas volveré a la carga.

Gabriel Osorio

unread,
Mar 12, 2013, 6:20:51 PM3/12/13
to altnet-...@googlegroups.com
Hola, 
Recibí un violento y descortés llamado de atención; tenemos troll. 

Sin embargo, algo tiene sentido. Si uno pregunta lo mejor es contar como le fue, así haya poco avance. Estos son mis resultados:

Aprendí a usar socket.io con node.js gracias a este maravilloso ejemplo de Gonzalo Ayuso:

Y gracias a los ejemplos de José Romaniello hice este primer intento de prueba con chai:

var chai = require('chai');
var io = require('socket.io-client');

chai.should();

console.log("Test broadcasting messages");

//Html client
var socket = io.connect('http://localhost:8000', {'force new connection':true});

//Test if server is broadcasting messages
socket.on('message', function(msg){
msg.should.equal('echo');
socket.disconnect();
console.log(" -- ok -- ");
});

//Mock Message sent by html page
socket.send("echo");


Mocha me intimidó un poco porque me pareció exige BDD. Gracias por la ayuda y consejos.
Gabriel

José F. Romaniello

unread,
Mar 12, 2013, 7:05:00 PM3/12/13
to altnet-...@googlegroups.com


El 12/03/2013 19:20, "Gabriel Osorio" <ge.e...@gmail.com> escribió:
>
> Hola, 
> Recibí un violento y descortés llamado de atención; tenemos troll. 

What?

Gabriel Osorio

unread,
Mar 13, 2013, 12:59:10 PM3/13/13
to altnet-...@googlegroups.com
Falsa alarma, era una firma con un humor difícil de apreciar cuando no se está acostumbrado.


--
Reply all
Reply to author
Forward
0 new messages