У меня есть JS файл code.js
, который будет загружен веб-сайтом, содержащим следующий код:
window.someObject = window.someObject || {};
window.someObject.someFunction= function(aCondition) {
if (aCondition) someExternalObject.someFunc2();
};
setTimeout(window.someObject.someFunction, 1000);
Я не могу изменить этот код.
I Я хочу написать для этого модульный тест, поэтому мой тестовый файл будет выглядеть примерно так:
const expect = require('chai').expect;
var rewire = require('rewire');
var codeModule = require('./path/to/file/code.js');
describe('Test code.js', () => { //Using Mocha.js
//Stub someObject.someFunction
//Test stub with expect()
})
//MORE CODE
В результате получается ReferenceError: window is not defined
, поскольку в Node нет оконного объекта.
Причина, по которой я хочу импортировать этот модуль, заключается в том, что я хочу смоделировать someObject.someFunction
для своего теста.
Как я могу справиться со ссылками на API-интерфейсы браузера, например объект окна при тестировании с Node? Нужен ли мне пакет типа this перед этим?
Я довольно новичок в этом, так что терпите меня, если у меня возникнут некоторые заблуждения.