如何为一个MQTT客户端编写测试?

5

我是MQTT的新手,并且正在测试中,不确定它们应该如何协同工作。

我使用了mqtt.js,并想编写一些基本测试。那我应该如何构建测试呢?更具体地说,我需要模拟 MQTT 代理吗,还是可以进行实时连接?这个连接应该是到类似 HiveMQ 的测试服务,还是到我自己设置的代理?

我的设置:

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

有3个 Docker 容器。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')
})
1个回答

4
通常情况下,您不需要测试其他服务,因为它们负责自己的测试。您只需要测试代码执行的工作单元。因此,是的,您可能需要模拟代理/连接响应对象来进行测试:
需要验证的区域可能包括...
1. 是否正确处理连接失败 2. 是否正确处理连接成功 3. 是否正确解析消息有效载荷(json?) 4. 是否正确处理格式不正确的有效载荷
等等......
但是,您可以编写用于代理的负载/压力测试。我使用paho python客户端测试集群,并使用gatlin执行负载/压力测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接