我正在为我的快递路由器编写mocha单元测试。 我发现无论如何我试图存根中间件,它仍然执行中间件代码。 这是我的路由器&测试,谁能想出来?
路由器:
import { aMiddleware, bMiddleware, cMiddleware } from '../middleware.js';
router.post('/url', aMiddleware, bMiddleware, cMiddleware, function(req, res) { ... }
中间件:
AuthMiddleware.aMiddleware = async (req, res, next) => {
console.log('in real middleware');
next();
}
测试:
var authMiddleware = require('../../middleware/auth.js');
describe('Test', async () => {
before(function (done) {
_STUB_MIDDLEWARE_A = sinon.stub(authMiddleware, 'aMiddleware');
_STUB_MIDDLEWARE_A.callsArg(2);
}
after(function (done) {
_STUB_MIDDLEWARE_A.restore();
}
}
终端将在中间件中显示console.log('在真正的中间件'中)
答案 0 :(得分:0)
这可能是因为存根发生在模块已经加载之后。您可能需要首先清除路由器文件的缓存,然后在存根后再次加载它,因为es6将缓存导入的模块。