这是我创建的一个小型中间件,用于在对Node.js应用进行测试时跳过身份验证:
authentication(auth) {
if (process.env.NODE_ENV !== 'test') {
return jwt({
secret: new Buffer(auth.secret, 'base64'),
audience: auth.clientId
});
} else {
return (req, res, next) => { next(); };
}
}
我对它的外观不满意。有没有更优雅的方式来做到这一点?
最佳答案
我认为您对外观不满意是正确的。我认为您真正想做的是从测试代码中模拟出身份验证,而不是在实际的应用程序代码中进行模拟。一种方法是通过proxyquire。
如果app.js需要通过var authentication = require('./lib/authentication')
进行身份验证,那么一个非常简单的测试可能类似于以下内容
var proxyquire = require('proxyquire');
var app = proxyquire('./app.js', {
'./lib/authentication': function() {
// your "test" implementation of authentication goes here
// this function replaces anywhere ./app.js requires authentication
}
});
it('does stuff', function() { ... });
关于node.js - 运行测试时如何优雅地跳过express-jwt中间件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41213868/