Как я могу импортировать файл JS со ссылками на объект окна в Node.js? - PullRequest
1 голос
/ 31 января 2020

У меня есть 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 перед этим?

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

1 Ответ

0 голосов
/ 31 января 2020

Перед тем, как импортировать файл, сделайте это.

window = window || {}

Он определит объект window в глобальном пространстве имен, но, разумеется, без каких-либо полезных вещей, которые вы получаете в браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...