Тестируя событие Error, мой слушатель не вызывается - PullRequest
0 голосов
/ 08 ноября 2019

Я пишу библиотеку, которая обрабатывает событие ошибки DOM, и пытаюсь написать модульные тесты для своей библиотеки.

Вот моя первая попытка:

const html = `<!DOCTYPE html>
<html>
    <head>
        <title>hello</title>
        <script>
            function crash()
            {
                console.log('here');
                //document.getElementById('abc').innerHTML = 'hello';
                throw new Error("Testar");
            }
        </script>
    </head>
    <body>
    </body>
</html>`;
const dom = new JSDOM(html, {runScripts: "dangerously"});
dom.window.addEventListener('error', function(){console.log('ERROR!!')});
global.window = dom.window;
global.document = dom.window.document;

let actualContext: ContextCollectionProviderContext;
Reporter.instance = {
    reportByContext(context) {
        actualContext = context;
    },
};

describe('DOM error event', () => {
    it('should include the document collection', () => {
        catchDomErrors(config);

        global.window.eval('crash()');

        expect(actualContext).to.be('object');
    });
});

В моей библиотеке есть обработчик события ошибки, который я только что добавил, чтобы посмотреть, вызывается ли он. Ни один из них.

Я также пытался использовать виртуальную консоль:

const virtualConsole = new VirtualConsole();
virtualConsole.sendTo(console);
virtualConsole.on("error", () => { console.log('ERRRRRROR'); });
virtualConsole.on("jsdomError", (e) => {
console.log(e);
})
const dom = new JSDOM(html, {runScripts: "dangerously", virtualConsole});

Но когда я активирую ее, в консоль ничего не записывается, и ее события ошибок также не вызываются (или, по крайней мере, в консоль ничего не записано).

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

Вывод из теста:

enter image description here

Из того, что я прочитал, JSDOM не должен проходить тесты, если есть обработчик событий.

Как я могу использовать JSDOM для проверки обработчика событий ошибок моих библиотек?

...