2013-12-21 85 views
1

测试节点的TCP服务器我有一个我想与摩卡测试TCP服务器:与摩卡

// Start the server 
require('net').createServer(function (socket) { 
    // Handle incoming data 
    socket.on('data', function (data) { 
    ... some stuff 
    socket.write("reply with some err message if any"); 
    }); 
}); 

我通常发展与expressjs用于HTTP REST API节点应用,并使用咕噜-Express的服务器模块,如:

grunt.registerTask('validate', [ 
    'express:dev', 
    'mochaTest', 
    'express:dev:stop' 
]); 

这个运行express服务器,运行测试并停止express服务器。
是否有相同的东西来测试TCP服务器?

回答

3

当然可以。你可以用摩卡来测试你想要的任何东西。类似以下内容应该可以工作:

describe('Test tcp server', function() { 

    it('Should reply with some err message if any', function (done) { 

     // Set up a client and connect to port 31337 (or whatever port you use) 
     var client = net.connect({ port: 31337 }, 
      function() { 
       // Send some data 
       client.write('Let's send this data!'); 
      } 
     ); 

     // When data is returned from server 
     client.on('data', function(data) { 
      // Let's make sure data equals the correct message 
      data.should.equal('reply with some err message if any'); 
      client.end(); 
      done(); 
     }); 

    }); 

}); 
+0

我没有看到任何调用“done”。 – Louis

+0

@Louis你是对的!似乎我错过了:) – mekwall

+0

谢谢,这真的很有帮助,但是如何在测试套件开始时直接启动和停止服务器,并在所有测试完成后停止服务?任何用于测试快递服务器的grunt模块simiral? – Luc