我想断言,我的代码不会引发任何最终的错误。
问题是:我的代码执行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://how-to-assert-async-throw.glitch.me/
上面的代码通过了测试,即使最终会抛出错误。
发布于 2018-09-28 17:28:25
试试这个,让我知道这是否有效。
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', async function() {
async function disconnect(){
// this will throw once slotchange is emmited
await myElement.removeChild(myElement.firstElementChild);
}
expect(await disconnect()).not.to.throw();
});https://stackoverflow.com/questions/52559691
复制相似问题