Я не должен делать module.exports = foo () {} для облегчения тестирования - PullRequest
1 голос
/ 16 марта 2020

Иногда мне нужен модуль, чтобы сделать только одну вещь.

Например, у меня есть 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, а также разница.

...