Хобрук: Ваш путь к мастерству в программировании

Node Express es6 промежуточное программное обеспечение sinon stubbing не работает

Я пишу модульный тест мокко для моего экспресс-маршрутизатора. Я обнаружил, что как бы я ни пытался заглушить промежуточное программное обеспечение, оно все равно выполняет код промежуточного программного обеспечения. Вот мой роутер и тест, может кто разобрался?

Маршрутизатор:

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('в реальном промежуточном программном обеспечении') в промежуточном программном обеспечении


Ответы:


1

Вероятно, это связано с тем, что заглушка возникла после того, как модуль уже был загружен. Вероятно, вам нужно сначала очистить кеш для файла маршрутизатора, а затем снова загрузить его после заглушки, потому что es6 будет кэшировать импортированные модули.

09.10.2017
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..