我正在尝试测试一些使用Web worker的代码。我想检查错误路径是否有效;即,postMessage
处理程序正确地从Web worker中抛出的异常中恢复。
我遇到的问题是传播出Web工作者的异常导致它被视为未处理。例如,它在浏览器的控制台日志中打印并导致我的测试环境(围绕Karma的简单包装)将测试视为失败。
所以,我如何向浏览器/ Karma表明预期会出现一个特定网络工作者的异常,并且不应该被视为未处理?我不希望它打印到控制台,我希望我的测试通过。
我想出的唯一想法是将web worker代码包装在try / catch中,并通过MyClass
封送捕获的异常,但这需要丢弃大量信息,因为需要对错误对象进行字符串化(否则为triggers a data clone error)。
答案 0 :(得分:2)
对preventDefault
处理程序的错误事件对象调用onError
。
worker.onError = function(e) {
e.preventDefault(); // <-- "Hey browser, I handled it!"
...
}