如何声明异步“抛出”?

时间:2018-09-28 16:51:29

标签: javascript chai web-component shadow-dom web-component-tester

我想断言我的代码不会引发任何最终错误。

问题是:我的代码执行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/

代码最终通过测试,即使最终会抛出错误。

1 个答案:

答案 0 :(得分:0)

尝试一下,让我知道是否可以解决问题。

    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();
   });