如何使用Mocha和Chi检查Node JS中的Rabbit连接以进行单元测试

时间:2019-04-24 11:00:55

标签: node.js rabbitmq mocha chai

我正在使用amqplib软件包连接到nodeJS中的RabbitMQ,并想知道 如何在nodeJS中使用Mocha和Chai检查/验证我的RabbitMQ连接?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作之一:

答案 1 :(得分:0)

如果您正在使用 ampqlib 包并且您想测试连接是否建立,那么它不被视为单元测试,我们可以称之为集成测试。

其他答案有很好的关于集成测试的内容,但对于单元测试,您可以使用 amqplib-mocks (https://www.npmjs.com/package/amqplib-mocks),这是一个简单的 amqplib 模拟框架。

对于基本的单元测试,您可以检查是否调用了 amqp.connect(url) 并期望得到您想要的 URL。

我还可以展示一个基本示例,您可以如何获取存根连接对象: (ps:这不是运行代码,仅供参考)

subscriber.js

const amqp = require('amqplib');
class Subscriber {
   async getConnection(url) {
        const connection = await amqp.connect(url);
        return connection;
   }
}

订阅者类有一个方法getConnection,它与rabbitmq建立并返回一个连接对象。

subscriber.test.js

const amqpMock = require('amqplib-mocks');
const sinon = require('sinon');

const mockConnection = await amqpMock.connect('mockurl.com');
const getConnectionStub = sinon.stub(Subscriber.prototype, 'getConnection').returns(mockConnection);

在上面的代码中,您可以直接存根 ampq.connect 或存根 getConnection 方法并返回由 amqp-mock 的 connect 方法返回的连接对象。

要了解以上使用的 sinon 的更多信息,click