我正在使用amqplib
软件包连接到nodeJS中的RabbitMQ,并想知道
如何在nodeJS中使用Mocha和Chai检查/验证我的RabbitMQ连接?
答案 0 :(得分:0)
您可以尝试以下操作之一:
您可以使用docker iamage docker-rabbitmq创建有效的Rabbit-mq连接,并向您的应用程序发出实际请求,但这不是单元测试,而更像是集成测试。
您可以使用sinon对其进行嘲讽,我可以就此主题向我建议的一篇很好的文章是Best practices for spies, stubs, and mocks in sinonjs
答案 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。