Protractor: 捕捉 AssertionError

4
我正在使用基于JavaScript的测试工具,使用ProtractorChai as Promised。在检查URL时,我遇到了以下错误:AssertionError: expected 'http://localhost:8888/test/homepage.php' to equal 'http://localhost:8888/test/my_homepage.php'

以下是我的步骤定义:

this.Then(/^The url of the page should be "([^"]*)"$/, function(myUrl, callback){
    expect(browser.getCurrentUrl()).to.eventually.equal(myUrl);

    callback();
  });

我希望能够捕获这个错误以便使用另一个回调函数,我该如何做?我尝试使用 try-catch 块来处理,但好像不起作用。我甚至无法确定 Protractor 是否生成了 AssertionErrors,请您给我一个解释。
谢谢。

这里使用 notify 会有帮助吗:expect(browser.getCurrentUrl()).to.eventually.equal(myUrl).notify(yourcallback) - alecxe
1个回答

2

我找不到任何可以从expect中捕获错误并执行其他操作的方法。如果@alecxe评论中的建议有效,那么那就是你的答案,否则为什么不只是这样做:

browser.getCurrentUrl().then(function(url) {
    if(url === myUrl) {
       callback();
    } else {
       callback('something went wrong'); 
    }
});

或者这样做行不行?
try {
  expect(browser.getCurrentUrl()).to.eventually.equal(myUrl);
  callback();
} catch(e) {
  callback('something went wrong ')); 
}

我不知道为什么,但callback.fail()没有被识别为函数。 - Ema.jar
1
好像在0.7.0版中移除了callback.fail()。请查看此链接。你可能只需要使用callback(new Error('something went wrong')) - nilesh
错误信息为 -> 语法错误:意外的非法标记 :( - Ema.jar
你能否尝试只放一个字符串而不是错误对象?我更新了答案。 - nilesh
有没有文档可以找到回调函数的参数?结果一直都是一样的。 - Ema.jar
README 中有很多关于 callback(new Error('')); 的引用。 - nilesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接