node.js - 在 Node.js 中测试 dgram 绑定(bind)

标签 node.js unit-testing mocha.js chai

如何编写测试来验证我的应用程序是否通过 dgram 绑定(bind)到特定的 UDP 端口?下面是我想要测试的代码片段:

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
    });
});

非常感谢任何帮助!

最佳答案

根据documentation ,将在 socket 上发出 error 事件,或者如果 socket.bind() 失败,可能会引发错误。

因此,您可以监视这两件事,并向 socket.bind() 添加一个回调参数(或者在 socket 上添加一个 listening 事件处理程序,这就是 socket.bind() 为您所做的事情),绑定(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);
}

关于node.js - 在 Node.js 中测试 dgram 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30147274/

相关文章:

node.js - 错误: Failed to transpile program Ionic 3

javascript - 如何删除所有版本的node,包括用brew安装的版本?

javascript - 如何在socket.io中始终加入同一个房间?

express - Mocha 测试正在通过,但断言或期望失败

javascript - 在一个字符串中查找多个组

javascript - 对 Angular 2 组件进行单元测试时,内置管道会导致失败

javascript - Angular : How to properly mock a Promise returned from $http

python - 无法在 Visual Studio Code 中调试 Django 单元测试

node.js - 如何让 Nock 和 Mocha 一起玩?

node.js - mocha,用于 nodejs 中的 post 的 chai 测试