Sinon: Глобальные переменные-заглушки

Созданный на 7 янв. 2019  ·  3Комментарии  ·  Источник: sinonjs/sinon

Модули, которые я хочу протестировать и/или смоделировать, используют некоторые глобальные переменные.

Например, исходный код модуля делает ссылку на переменную session , которая нигде не определена, но доступна во время выполнения.

Рассмотрим модуль globals.js :

let globals = {
    contextName: "DATA_PIPELINE",
    reportContext: "report",
    session: session
};

module.exports = globals;

session не определено в этом файле, но доступно во время выполнения. Это глобальная переменная среды (не под моим контролем).

Я заметил, что с поддельными таймерами вам удалось заменить реализацию глобальных функций, таких как setTimeout. Как мы могли бы применить это к любой глобальной функции/объекту?

Все 3 Комментарий

Может быть, sinon.replace(object, prop, replacement) — это то, что вы ищете?
https://sinonjs.org/releases/v7.2.4/sandbox/#sandboxreplaceobject -property-replacement

Мы стараемся, чтобы список проблем GitHub был аккуратным и сосредоточивался на ошибках и обсуждениях функций. Этот билет выглядит как вопрос использования; опубликуйте его на StackOverflow и пометьте sinon , чтобы более широкое сообщество могло помочь ответить на ваши вопросы.

В Node.js вы можете сделать что-то вроде:

global.session = sinon.stub();
// Proceed to import the modules that use the session global and run the tests
Была ли эта страница полезной?
0 / 5 - 0 рейтинги