Тестирование веб-компонентов Mocha - ReferenceError: customElements не определен - PullRequest
3 голосов
/ 08 мая 2020

Я пытаюсь провести очень базовое c тестирование веб-коконов с использованием машинописного текста и мокко. Я использую jsdom для имитации глобальных документов basi c, поэтому у меня есть --require jsdom-global/register в моих опциях moch.

Вот мой тест:

import { assert } from "chai";

class WordCount extends HTMLParagraphElement {
  constructor() {
    super();
  }
}

describe("simple test", () => {
    it("works", () => {
      customElements.define('word-count', WordCount, { extends: 'p' });
      assert.isOk(true);
    });
});

Но я получаю следующая ошибка:

ReferenceError: customElements is not defined

Последняя версия JSDom (которую я использую) поддерживает customElements. Я думаю, проблема сводится к window.customElements против customElements. Первый синтаксис работает, но код, который я пытаюсь проверить, использует второй синтаксис. В чем разница?

1 Ответ

2 голосов
/ 09 мая 2020

В контексте браузера нет разницы между window.customElements и customElements, потому что window является пространством имен по умолчанию для переменных, определенных глобально.

var my_var = 'foo"
console.log( window.my_var ) //foo
console.log( window.customElement === customElement )

Тестовая библиотека JSDo c выполняется в контексте Node.js, который не является браузером и, следовательно, не будет предоставлять window в качестве своего глобального пространства имен / пространства имен по умолчанию.

Однако JSDo c предоставляет смоделированный контекст браузера через свойство window. Таким образом, вы можете использовать window.customElements(), и нет никакой разницы с кодом, который вы пытаетесь проверить.

...