2017-12-13 5 views
0

확장 클래스가 HTMLElement입니다. 이 스레드를단위 테스트 사용자 정의 요소

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

을 읽기에서 나는 밖으로는 Illegal constructor을 받고있는 사용자 정의 요소를 인스턴스화 할 수 없습니다 것을 알 수있다. 또한 registerElement은 사용자 정의 요소의 생성자를 반환했지만 현재는 CustomElementRegistry.define()을 사용하여 더 이상 사용되지 않으므로 window 객체에 1.이 있고 void가 반환됩니다. 어떤 해결책을 주셔서 대단히 감사합니다.

이 특정 설정에 대해 사용자 지정 요소 만 필요하기 때문에 웹 구성 요소 프레임 워크가 아니라 기본 사용자 지정 요소를 사용하려고합니다. 또한 TypeScript를 사용하고 테스트를 위해 Jest를 사용하려고합니다.

+2

테스트에는 Karma 또는 Web Component Tester 또는 브라우저를 사용하는 뭔가를 사용해야합니다. 그런 다음 구성 요소를 브라우저에서 인스턴스화하고 테스트 할 수 있습니다. – Intervalia

답변

1

요소가 실제로 무엇을하는지에 따라 디자인 원리 "관심 분리"와 "제어 반전"을 고려할 수 있습니다.

서로 다른 클래스에서 서로 다른 것들이 구현 될 때 우려가 분리됩니다. 이것은 또한 분리 된 것들이 구체적인 HtmlElement를 인스턴스화하지 않고 테스트 될 수 있음을 의미합니다.

분리 된 클래스 (아마도 HtmlElement)의 종속성을 클래스 외부에서 설정할 수 있으면 테스트 기반 객체에 스텁을 제공하여 HtmlElement를 쉽게 스텁 또는 모의 할 수 있으므로이 Inversion of controll은이 지점에서 편리합니다. 예.

아이디어는 unittest에서 액세스 할 수 없거나 제어 할 수없는 것들과 독립적 인 방식으로 코드를 디자인하는 것입니다.

관련 문제