如何在sinon中测试HTTP状态码500?

时间:2018-11-14 08:33:00

标签: node.js unit-testing sinon

我在nodejs的主类中有以下代码。

我正在使用sinon进行单元测试。

我如何测试这部分代码 res.status(error.status || 500);

我能够通过调用无效的URL来测试error.status部分,从而导致上面的错误处理404,但是我如何进入500流?

main.js:

...
//importing route
var routes = require('./api/rest/webservRest'); 

//register the route
routes(app); 

//reached here throw error 404, means no routes to handle inc. request
app.use((req, res, next) => {
    const error = new Error('Not found');
    error.status = 404;

    next(error);
});

// catch errors
app.use((error, req, res, next) => {

    log.error("ERROR - " + req.url + " - " + error.message);

    res.status(error.status || 500);
    res.json({
        error: {
            message: error.message
        }
    }); 
});

//start application
module.exports = app.listen(port, () => {
    log.info('Module - RESTful API server started on: ' + port);    
});

1 个答案:

答案 0 :(得分:0)

如果500返回虚假值,例如error.statusfalse,则会捕获

undefined

因此,也许您可​​以使用Sinon来对error进行如下操作:

const error = {
  status: false,
  message: 'something'
}

const error = {
  message: 'something'
}

希望有帮助