Unit testing Express和sinon:app.use回调函数测试

Unit testing Express和sinon:app.use回调函数测试,unit-testing,express,mocha.js,sinon,Unit Testing,Express,Mocha.js,Sinon,我想知道如何测试这个Express代码段: app.use((err, req, res, next) => { log.debug(`${MODULE_NAME}:ErrorHandler (ERROR) --> err: ${JSON.stringify(err)}`); res.status(err.status).json(err); }); 使用西农咖啡和摩卡咖啡。我浏览了所有的互联网,但都没用。任何帮助都将不胜感激 致以最诚挚

我想知道如何测试这个Express代码段:

app.use((err, req, res, next) => {
        log.debug(`${MODULE_NAME}:ErrorHandler (ERROR) --> err: ${JSON.stringify(err)}`);
        res.status(err.status).json(err);
      });
使用西农咖啡和摩卡咖啡。我浏览了所有的互联网,但都没用。任何帮助都将不胜感激


致以最诚挚的问候

以下是单元测试解决方案:

index.js

const express=require('express');
常量日志={
调试:console.log,
};
函数createServer(){
常量app=express();
常量模块名称='main';
应用程序使用((错误、请求、恢复、下一步)=>{
log.debug(`${MODULE\u NAME}:ErrorHandler(ERROR)-->err:${JSON.stringify(err)}`);
res.status(err.status).json(err);
});
}
module.exports=createServer;
index.test.js

const sinon=require('sinon');
const proxyquire=require('proxyquire');
描述('60206259',()=>{
它('应该通过',()=>{
const mRes={status:sinon.stub().returnsThis(),json:sinon.stub()};
const mError=新错误(“网络”);
mError.status=500;
const-appStub={use:sinon.stub().callsFake((mw)=>mw(mError,{},mRes))};
const expressStub=sinon.stub().callsFake(()=>appStub);
const createServer=proxyquire(“./”{
快递:快递存根,
});
createServer();
sinon.assert.calledOnce(expressStub);
sinon.assert.calledWithJustice(appStub.use、sinon.match.func);
sinon.assert.calledWithJustice(mRes.status,500);
sinon.assert.calledWithJustice(mRes.status().json,mError);
});
});
100%覆盖率的单元测试结果:

60206259
main:ErrorHandler(ERROR)-->err:{“status”:500}
✓ 应通过(2802ms)
1次通过(3秒)
----------|---------|----------|---------|---------|-------------------
文件|%Stmts |%Branch |%Funcs |%Line |未覆盖行|s
----------|---------|----------|---------|---------|-------------------
所有文件| 100 | 100 | 100 | 100 |
index.js | 100 | 100 | 100 | 100 |
----------|---------|----------|---------|---------|-------------------
源代码: