Javascript 在node.js中编写单元测试用例,使用mocha模拟azure服务总线队列

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

我正在尝试使用mocha framework编写一个单元测试用例,在这里我必须通过传递连接字符串和队列名称来模拟azure service bus队列……有人可以帮助我如何使用node.js模拟用于单元测试用例目的的队列吗

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;i您应该使用存根/模拟库,例如。下面是单元测试:

index.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;i
index.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 |
----------|---------|----------|---------|---------|-------------------

源代码:

提供测试中的代码。我已经添加了代码。请查找上面的代码。我还需要有关从队列单元测试用例接收消息的帮助