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

时间:2017-02-14 15:31:30

标签: unit-testing mocha 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')
})

1 个答案:

答案 0 :(得分:3)

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

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

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

  1. 是否正确处理连接失败
  2. 是否正确处理连接成功
  3. 是否正确解析消息有效负载(json?)
  4. 是否正确处理格式错误的有效负载。
  5. 等.....

    但是,您可以为经纪人编写负载/压力测试。我使用paho python客户端来测试聚类,并执行加载/压力测试(使用gatlin)。