这是我创建的一个小型中间件,用于在我的nodejs应用程序的测试期间跳过身份验证:
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(); };
}
}
我对它的外观不满意。是否有更优雅的方式来实现这一目标?
答案 0 :(得分:1)
我认为你对看起来的方式不满意是正确的。我认为您真正希望能够做的是从测试代码而不是实际的应用程序代码中模拟您的身份验证。一种方法是通过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() { ... });