如何使用 mocha 和 chi 检查节点 js 中的兔子连接以进行单元测试
How to check rabbit connection in node js for unit test using mocha and chi
我正在使用 amqplib
-package 连接到 nodeJS 中的 RabbitMQ,我想知道
我如何在 nodeJS 中使用 Mocha 和 Chai check/verify 我的 RabbitMQ 连接?
您可以尝试以下方法之一:
您可以使用 docker iamage docker-rabbitmq 创建有效的 rabbit-mq 连接并向您的应用程序发出真正的请求,但这不是单元测试,更像是集成测试。
您可以使用 sinon a very good article I can suggest on this topic is Best practices for spies, stubs, and mocks in sinonjs
模拟它
- 您可以在 google 组上关注此主题 NodeJS + RabbitMQ (amqplib):如何针对它们编写良好的单元测试。
如果你使用的是 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;
}
}
订阅者 class 有一个方法 getConnection
建立和 return 一个与 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
方法和 return 连接对象,作为 return 由 amqp-mock 的连接方法编辑。
要了解更多关于上面使用的 sinon,click。
我正在使用 amqplib
-package 连接到 nodeJS 中的 RabbitMQ,我想知道
我如何在 nodeJS 中使用 Mocha 和 Chai check/verify 我的 RabbitMQ 连接?
您可以尝试以下方法之一:
您可以使用 docker iamage docker-rabbitmq 创建有效的 rabbit-mq 连接并向您的应用程序发出真正的请求,但这不是单元测试,更像是集成测试。
您可以使用 sinon a very good article I can suggest on this topic is Best practices for spies, stubs, and mocks in sinonjs
模拟它
- 您可以在 google 组上关注此主题 NodeJS + RabbitMQ (amqplib):如何针对它们编写良好的单元测试。
如果你使用的是 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;
}
}
订阅者 class 有一个方法 getConnection
建立和 return 一个与 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
方法和 return 连接对象,作为 return 由 amqp-mock 的连接方法编辑。
要了解更多关于上面使用的 sinon,click。