unit-testing - 如何为 MQTT 客户端编写测试?

标签 unit-testing mocha.js mqtt chai mosquitto

我是 MQTT 和测试的新手,我不确定两者应该如何协同工作。

我正在使用 mqtt.js并且想写一些基本的测试。我应该如何构建它们?更具体地说,我需要模拟 MQTT 代理,还是可以建立实时连接?该连接应该连接到 HiveMQ 等测试服务,还是连接到我自己设置的代理?

我的设置:

我正在构建一个聊天应用程序。

3 个码头容器。 1 个经纪人(使用 mosquitto ,2 个客户端。

客户正在使用 mqtt.js在作为网页一部分加载的脚本中,该网页用作在聊天中输入和阅读消息的前端。加载客户端脚本后,会使用默认消息主题与代理建立连接。

我已经能够成功连接并验证客户端可以发送和接收消息,但是编写应用程序以进行适当的测试让我目瞪口呆。

使用 Mocha/Chai 进行测试

index.js => 被 webpack 捆绑到 'bundle.js' 并由 HTML 加载到脚本标签中

// index .js
// gets bundled by wepback and loaded within a script tag in browser

const mqtt = require('mqtt')
const client = mqtt.connect('mqtt://localhost:9001')

client.on('connect', function () {
  console.log(process.env.NAME + ' has connected')
  client.publish('welcome', 'this is a message')
})

最佳答案

通常你不想测试其他服务,他们负责自己的测试。您只想测试代码所做的工作单元。

所以是的,您可能想要模拟代理/连接响应对象来测试:

要验证的区域可能是...

  • 是否正确处理连接失败
  • 是否正确处理连接成功
  • 它是否正确解析消息负载(json?)
  • 它是否正确处理格式错误的有效负载。

  • 等等.....

    但是,您可以为代理编写负载/压力测试。我使用 paho python 客户端来测试集群,并执行负载/压力测试(使用 gatlin)。

    关于unit-testing - 如何为 MQTT 客户端编写测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42230094/

    相关文章:

    java - 在 JUnit 测试中尝试 catch

    javascript - 如何使用 Jasmine.js 监视所需的功能

    arduino - Mosquitto套接字读取错误Arduino客户端

    javascript - 单元测试 Angular 指令点击处理程序

    java - 嵌套 do while 循环的 Junit 测试用例

    powershell - 如何让 Mocha 的 Unicode 输出在 Windows 控制台中正确显示?

    javascript - 使用 Sinon 在 javascript 中 stub Redis 交互

    javascript - 使用 Chai 检查数组中的所有元素

    java - Eclipse Paho Mqtt Client 是否保留所有已发布的消息,直到它们被代理在 QoS-2 下确认交付?

    c - 如何使用mosquitto_publish同步发布数据?