2016-12-30 8 views
2

私のエクスプレスルータのモカユニットテストを書いています。 しかし、私はミドルウェアをスタブしようとしましたが、それはまだミドルウェアのコードを実行します。 ここに私のルータ&テストは、誰でも把握できますか?ノードexpress es6 sinonスタブミドルウェアが動作しない

ルータ:

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

これは可能性が高いですモジュールが既にロードされた後にスタブが発生したためです。 es6がインポートされたモジュールをキャッシュするため、ルータファイルのキャッシュを最初にクリアしてから、スタブ後に再度ロードする必要があります。

関連する問題