Как я могу провести модульное тестирование настраиваемого элемента

У меня есть класс, расширяющий HTMLElement. Из чтения этой ветки

https://github.com/Microsoft/TypeScript/issues/574#issuecomment-231683089

Я вижу, что не могу создать экземпляр настраиваемого элемента, не получив Illegal constructor. Вдобавок registerElement выглядел многообещающим, поскольку он вернул конструктор для настраиваемого элемента, но теперь он устарел из-за использования CustomElementRegistry.define(), который 1. существует в объекте окна и 2. возвращает void. Любые решения будут приняты с благодарностью.

для этой конкретной настройки я пытаюсь использовать собственные настраиваемые элементы, а не структуру веб-компонентов, потому что мне нужны только настраиваемые элементы. Кроме того, я использую TypeScript и пытаюсь использовать Jest для его тестирования.


person Jonathan Fishbein    schedule 13.12.2017    source источник
comment
Вы должны использовать что-то вроде Karma или Web Component Tester или что-то еще, что использует браузер для тестов. Затем ваш компонент может быть создан в браузере и протестирован.   -  person Intervalia    schedule 13.12.2017


Ответы (1)


В зависимости от того, что конкретно делает ваш элемент, вы можете рассмотреть возможность принятия во внимание принципов проектирования «разделение ответственности» и «инверсия управления».

Разделение проблем будет достигнуто, когда разные вещи будут реализованы в разных классах. Это также означало бы, что отдельные объекты можно тестировать без создания конкретного HtmlElement.

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

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

person treeno    schedule 19.12.2017