Я пишу юнит-тесты для моего веб-компонента трафарета. В одном из моих методов я использовал insertHTMLElement над элементом, который находится внутри JSX моего веб-компонента. Компонент работает нормально, когда я обычно использую его в браузере.
Но при написании модульных тестов, когда я создаю этот компонент с использованием интерфейса newSpecPage, он ломается, потому что insertAdjacentHTML и аналогичные методы отсутствуют в интерфейсе MockHTMLElement, так как Jestзаменяет обычный интерфейс DOM своим собственным MockDOM
my-component.spec.ts
it('should work',()=>{
const myComponent = await newSpecPage({
components: [MyComponent],
html: `<my-component></my-component>`
}); // throws ERROR
expect(myComponent.root.querySelector('#test')).notToBeNull(); // fails
});
my-component.tsx
@Component({
tag: 'my-component'
})
export class MyComponent {
@Element() rootElem:HTMLElement;
componentDidLoad() {
// throws TypeError: this.rootElem.insertAdjacentHTML is not a function
// this.rootElem is of type MockHTML element when run from test else HTMLELement
this.rootElem.addAdjacentHTML('beforeend','<span id="test"></span>);
}
render() {
return (
<div id="container">
</div>
);
}
}