私のコードは最終的なエラーをスローしないと断言したいと思います。
問題は、コードが DOM 操作を実行し、非同期反応をトリガーすることです。
const slot = document.createElement('slot');
myElement.attachShadow({mode:'open'}).appendChild(slot);
// ...
slot.addEventListener('slotchange', function badFunction(){
throw "MyError";
// const observer = new MutationObserver(()=>{});
// observer.observe(null);
});
// ...
it('when input child element is removed, should not throw an error', function() {
function disconnect(){
// this will throw once slotchange is emmited
myElement.removeChild(myElement.firstElementChild);
}
expect(disconnect).not.to.throw();
});
- 作業スニペット: https://glitch.com/edit/#!/how-to-assert-async-throw ?
- ライブ サンプル: path=index.html:28:9
https://how-to-assert-async-throw.glitch.me/
エラーが最終的にスローされる場合でも、上記のコードはテストに合格します。