Javascript 在node.js中编写单元测试用例,使用mocha模拟azure服务总线队列
我正在尝试使用mocha framework编写一个单元测试用例,在这里我必须通过传递连接字符串和队列名称来模拟azure service bus队列……有人可以帮助我如何使用node.js模拟用于单元测试用例目的的队列吗Javascript 在node.js中编写单元测试用例,使用mocha模拟azure服务总线队列,javascript,node.js,unit-testing,mocha.js,azureservicebus,Javascript,Node.js,Unit Testing,Mocha.js,Azureservicebus,我正在尝试使用mocha framework编写一个单元测试用例,在这里我必须通过传递连接字符串和队列名称来模拟azure service bus队列……有人可以帮助我如何使用node.js模拟用于单元测试用例目的的队列吗 async function pushToQueue(messages, ctx) { context = ctx; const { ServiceBusClient } = require("@azure/service-bus"); const c
async function pushToQueue(messages, ctx) {
context = ctx;
const { ServiceBusClient } = require("@azure/service-bus");
const connectionString = process.env['serviceBusConnectionString'];
const queueName = process.env['serviceBusQueueName'];
const sbClient = ServiceBusClient.createFromConnectionString(connectionString);
const queueClient = sbClient.createQueueClient(queueName);
const sender = queueClient.createSender();
try {
for (let i = 0; i < messages.length; i++) {
const message = {
body: messages[i]
}
await sender.send(message);
//await test(message);
}
await queueClient.close();
} finally {
await sbClient.close();
}
return messages.length
}
module.exports = { pushToQueue}
异步函数pushToQueue(消息,ctx){
上下文=ctx;
const{ServiceBusClient}=require(@azure/servicebus”);
const connectionString=process.env['serviceBusConnectionString'];
const queueName=process.env['serviceBusQueueName'];
const sbClient=ServiceBusClient.createFromConnectionString(connectionString);
const queueClient=sbClient.createQueueClient(queueName);
const sender=queueClient.createSender();
试一试{
for(设i=0;iindex.js
:
异步函数pushToQueue(消息,ctx){
上下文=ctx;
const{ServiceBusClient}=require('@azure/service-bus');
const connectionString=process.env['serviceBusConnectionString'];
const queueName=process.env['serviceBusQueueName'];
const sbClient=ServiceBusClient.createFromConnectionString(connectionString);
const queueClient=sbClient.createQueueClient(queueName);
const sender=queueClient.createSender();
试一试{
for(设i=0;iindex.test.js
:
const{pushToQueue}=require('.');
const sinon=要求(“sinon”);
const{ServiceBusClient}=require('@azure/service-bus');
描述('60772165',()=>{
它('should push to queue',async()=>{
常量sbClientStub={
createQueueClient:sinon.stub().returnsThis(),
CreateSsender:sinon.stub().returnsThis(),
发送:sinon.stub(),
关闭:sinon.stub(),
};
sinon.stub(ServiceBusClient,'createFromConnectionString')。callsFake(()=>sbClientStub);
const messages=['a','b'];
常数ctx={};
const actual=等待pushToQueue(消息,ctx);
sinon.assert.match(实际值,2);
sinon.assert.calledWithJustice(ServiceBusClient.createFromConnectionString,未定义);
sinon.assert.calledWithJustice(sbClientStub.createQueueClient,未定义);
sinon.assert.calledOnce(sbClientStub.createSender);
sinon.assert.calledWithJustice(sbClientStub.send.firstCall,{body:'a'});
sinon.assert.calledWithJustice(sbClientStub.send.secondCall,{body:'b'});
sinon.assert.calledTwice(sbClientStub.close);
});
});
100%覆盖率的单元测试结果:
60772165
✓ 应该推到队列中
1次通过(14毫秒)
----------|---------|----------|---------|---------|-------------------
文件|%Stmts |%Branch |%Funcs |%Line |未覆盖行|s
----------|---------|----------|---------|---------|-------------------
所有文件| 100 | 100 | 100 | 100 |
index.js | 100 | 100 | 100 | 100 |
----------|---------|----------|---------|---------|-------------------
源代码:提供测试中的代码。我已经添加了代码。请查找上面的代码。我还需要有关从队列单元测试用例接收消息的帮助