node.js - 我应该不做 module.exports = foo(){} 以便于测试
问题描述
有时我需要一个模块来做一件事。
就像,我有一个auth middleware
,它的工作是验证用户是否经过身份验证。
我认为没有任何理由这样做。
但是在这里我可以使用 sinon 轻松地存根它
const auth = asyn function(req, res, nex) {
}
module.exports = {
auth: auth
}
//stubbing(in test.js)
const authStub = sinon.stub(authMiddleware, 'auth')
相反,我喜欢做
module.exports = async function(req, res, next) {
}
我的方法有什么问题?
我遇到的一个问题。auth middleware
如果我这样做,我不能存根module.exprts = function(){}
在这种情况下,我必须使用其他一些库,例如proxyquire
仅存根这些类型的middlewares
.
你们有什么建议?
有什么替代方法可以达到同样的效果吗?或者最好不要存根auth
?
我只是从测试的角度要求它作为最佳实践。我知道做什么moduel.exports
或做什么exports
,也知道区别。
解决方案
推荐阅读
- c++ - 如何修复:对“class::function”的未定义引用
- javascript - 相对于已编辑文本显示 Pop
- css - 使用 Gulp、PostCSS 和 PurgeCSS 缩小 SASS
- javascript - 该块在第一次加载时显示在上块的顶部,并在页面刷新时固定
- laravel - 将来自不同表的数据合并到一个集合中
- java - Java 8 可选 - 我应该在这个例子中使用它吗
- java - 我无法访问类的方法
- python - 如何在二维列表中找到两个特定条件?
- oauth-2.0 - 客户端凭据流发送 401 错误,而单个流正在使用 Microsoft Graph API
- c# - .Net Core 警告未配置 XML 加密器