如何用TestCafe实现window.onerror?

时间:2019-08-05 16:07:09

标签: javascript testing error-handling e2e-testing testcafe

我需要抑制TestCafe测试中的错误(该错误来自模拟页面)。示例代码:

function stoperror() {
            try {
                this.clickMockContinueButton();
             } catch(e) {
                console.log(e)
             } 
            return true;
        }

Call it:

window.onerror = stoperror;

尽管我已经添加了Node窗口包:https://www.npmjs.com/package/window

错误= ReferenceError:未定义窗口

1 个答案:

答案 0 :(得分:2)

TestCafe仅提供两种在浏览器中执行JavaScript代码的方式:ClientFunctiont.eval。例如,如果要通过window.onerror属性安装全局错误处理程序,则可以使用以下代码:

const installErrorHandler = ClientFunction(() => {
   window.onerror = error => {
       // handle error here
   };
});

test('Install the error handler', async t => {
    await installErrorHandler();
});

但是我应该警告您,如果您警告禁止其他问题中所述的错误,则此方法将无效:TestCafe ClientFunction TypeError error as document is undefined

此问题的错误发生在ClientFunction上下文中,无法传播到全局错误处理程序。如果要抑制在ClientFunction实例中发生的错误,请使用try ... catch语句将代码包装在其主体内:

const dangerousFunction = ClientFunction(() => {
    try {
        // dangerous code
    }
    catch (e) {
        // handle error
    }
});