lundi 19 octobre 2015

How to write tests: Socket.io app unit testing

I am trying to make simple chat app using socket.io. I want to write tests (unit tests - to verify logic of server).

Manually it's working fine (via browser: http://localhost:3000/);

I don't get idea which tools/libraries to use for testing? Plz. Give me any idea how to do this?

Here is my node server code:

file: index.js

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

var socketCount = 0;

http.listen(3000, function(){
  console.log('listening on *:3000');
});

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket) {

  socketCount++;

  console.log('new user connected');

  // Let all sockets know how many are connected
  io.emit('users connected', socketCount);

    socket.on('disconnect', function(){
    // Decrease the socket count on a disconnect, emit
    socketCount--;
    io.emit('users connected', socketCount);
    });

  socket.on('chat message', function(msg){
    // New message added, broadcast it to all sockets
    io.emit('chat message', msg);
  });

});

And here is my html page:

file: index.html

<html>
......
<body>
    <ul id="messages"></ul>
    <div class='footer'>
      <div id="usersConnected"></div>
      <form action="">
        <input id="m" autocomplete="off" /><button>Send</button>
      </form>
    </div>
  </body>
  .....
  <script>
    $(document).ready(function(){
        $('#messages').val('');
        var socket = io();

        $('form').submit(function(){
          socket.emit('chat message', $('#m').val());
          $('#m').val('');
          return false;
        });

        // New message emitted, add it to our list of current messages
        socket.on('chat message', function(msg){
          $('#messages').append($('<li>').text(msg));
        });

        // New socket connected, display new count on page
        socket.on('users connected', function(count){
          $('#usersConnected').html('Users connected: ' + count);
        });
    });
  </script>
</html>

Thanks.

Aucun commentaire:

Enregistrer un commentaire