Websocket 带网袋的Nodeunit样品
我试图将TDD原则应用到使用node.js和nodeunit进行单元测试的应用程序中。我正在努力创建一个能够使用WebSocket测试应用程序通信协议的测试用例 我对TDD很陌生,所以,这种方法对TDD正确吗 你知道我在哪里可以找到这个的样品吗 编辑: 我有一个工作样品。但是,我有一个问题,服务器需要15秒才能自行关闭。我很感激关于这段代码的反馈(这是WIP) 文件tests/websocket.jsWebsocket 带网袋的Nodeunit样品,websocket,nodeunit,Websocket,Nodeunit,我试图将TDD原则应用到使用node.js和nodeunit进行单元测试的应用程序中。我正在努力创建一个能够使用WebSocket测试应用程序通信协议的测试用例 我对TDD很陌生,所以,这种方法对TDD正确吗 你知道我在哪里可以找到这个的样品吗 编辑: 我有一个工作样品。但是,我有一个问题,服务器需要15秒才能自行关闭。我很感激关于这段代码的反馈(这是WIP) 文件tests/websocket.js var Server = require('../tests/server.js').Serv
var Server = require('../tests/server.js').Server;
var wsServer = new Server();
var ioclient = require("socket.io-client");
var testCase = require('nodeunit').testCase;
exports.server = testCase({
setUp: function(callback) {
wsServer.initialize();
wsServer.addEvent('connection',function(socket){
socket.on('ping',function(data){
socket.emit('ping', { value: 'ok' });
socket.disconnect();
});
});
callback();
},
tearDown: function (callback) {
wsServer.close();
callback();
},
'ping test': function(test) {
var clientsocket = ioclient.connect( 'http://localhost:' + wsServer.getPort() );
clientsocket.on('ping', function(data){
test.equal('ok', data.value);
test.done();
});
clientsocket.emit('ping', { pingRequest: '1' });
},
'another ping test': function(test) {
var clientsocket = ioclient.connect( 'http://localhost:' + wsServer.getPort() );
clientsocket.on('ping', function(data){
test.equal('ok', data.value);
test.done();
});
clientsocket.emit('ping', { pingRequest: '1' });
}
});
文件test/server.js
function Server() {
this.port = 3333;
}
Server.prototype.initialize = function () {
this.create();
}
Server.prototype.getPort= function () {
return this.port;
}
Server.prototype.addEvent = function (name, fn) {
this.instance.sockets.on(name, fn);
}
Server.prototype.create = function () {
var io = require("socket.io").listen(this.port, {'log level': 1});
//io.sockets.on('connection',);
this.instance = io;
}
Server.prototype.close = function () {
this.port ++;
this.instance.server.close();
}
exports.Server = Server;
阅读之后,我发现添加“关闭超时”和“客户端存储过期”有助于我在jasmin测试中使用socket.io-client解决类似的问题。在服务器上,添加以下行(在咖啡中):
然后在客户端中,添加以下参数(“重新连接”和“强制新连接”):
在这里找到一个有趣的链接
app = module.exports = express.createServer()
io = require('socket.io').listen(app)
io.set 'close timeout', 0.2
io.set 'client store expiration', 0.2
socket = io.connect('http://localhost:5555', {'reconnect': false, 'force new connection': true})