2015-05-10 6 views
0

Как написать тест, чтобы проверить, что мое приложение является привязкой к определенному порту UDP через dgram? Ниже приведен фрагмент кода, я желающему тест:Проверка привязки dgram в Node.js

var dgram   = require('dgram'); 
var socket_json = dgram.createSocket('udp4'); 
var socket_syslog = dgram.createSocket('udp4'); 

socket_json.bind(6371); 
socket_syslog.bind(6370); 

Я пытаюсь использовать Mocha и Chai для моих тестов:

var expect = require("chai").expect; 
var sawyer = require("../server.js"); 

describe("Sawyer", function() { 
    it("should bind to UDP port 6370", function() { 
     // some kind of expect statement here 
    }); 

    it("should bind to UDP port 6371", function() { 
     // some kind of expect statement here 
    }); 
}); 

Любая помощь очень ценится!

ответ

0

Согласно documentation, error будет сгенерировано событие на socket или ошибка может быть выброшен, если socket.bind() не удается.

Таким образом, вы могли наблюдать за эти два вещи, а также добавить обратный вызов аргумент socket.bind() (или добавить обработчик событий listening на socket, что и socket.bind() делает для вас), который вызывается один раз связывание завершено.

Пример:

socket_json.on('error', function(err) { 
    console.log('Socket error: ' + err.message); 
}).on('listening', function() { 
    console.log('Successfully bound JSON socket!'); 
}); 
try { 
    socket_json.bind(6371); 
} catch (ex) { 
    console.log('Failed to bind JSON socket: ' + ex.message); 
} 
+0

Вы говорите, что я должен просто проверить, что написано в console.log() вместо проверки привязки непосредственно? – GeneBean

+0

Нет, это просто просто наполнитель. Это зависит от вас, как вы хотите обрабатывать ошибки, чтобы вы могли проверить их в своих модульных тестах. Один из вариантов может заключаться в том, чтобы поймать выброшенные ошибки и испустить их вместо этого через 'socket_json.emit ('error', ex)', так что вам нужно будет только прослушивать два события, «ошибка» для ошибок и «слушать» для успеха. В ваших модульных тестах вы можете прослушивать эти два события (если вам не нужен какой-то другой интерфейс, опять же это зависит от вас). – mscdex

Смежные вопросы