运行测试时如何优雅地跳过 express-jwt 中间件?
Posted
技术标签:
【中文标题】运行测试时如何优雅地跳过 express-jwt 中间件?【英文标题】:How to elegantly skip express-jwt middleware when running tests? 【发布时间】:2017-05-03 23:45:35 【问题描述】:这是我创建的一个小型中间件,用于在我的 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(); ;
我对它的外观不满意。有没有更优雅的方式来实现这一点?
【问题讨论】:
【参考方案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() ... );
【讨论】:
以上是关于运行测试时如何优雅地跳过 express-jwt 中间件?的主要内容,如果未能解决你的问题,请参考以下文章
如何有条件地跳过 Grails Spring Security 插件过滤器链中的 SecurityContextPersistenceFilter 过滤器