2016-12-30 4 views
2

Ich schreibe den Mokka-Unit-Test für meine Express-Router. Ich habe festgestellt, dass ich jedoch versuche, die Middleware zu stopfen, es immer noch den Middleware-Code ausführen. Hier ist mein Router & Test, könnte jemand herausfinden?node express es6 sinon stubbing middleware funktioniert nicht

Router:

import { aMiddleware, bMiddleware, cMiddleware } from '../middleware.js'; 

router.post('/url', aMiddleware, bMiddleware, cMiddleware, function(req, res) { ... } 

Middleware:

AuthMiddleware.aMiddleware = async (req, res, next) => { 
    console.log('in real middleware'); 
    next(); 
} 

Test:

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(); 
    } 
} 

Terminal die console.log zeigen ('real-Middleware') in Middle

Antwort

0

Dies ist wahrscheinlich weil der Stub passiert ist, nachdem das Modul bereits geladen wurde. Wahrscheinlich müssen Sie zuerst den Cache für Ihre Router-Datei löschen und dann nach dem Stubbing erneut einlesen, da es6 die importierten Module zwischenspeichert.