首页 > 解决方案 > 我应该不做 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,也知道区别。

标签: node.jsintegration-testingsinon

解决方案


推荐阅读