以下是我的代码。无论我的实际是否等于预期或不等于测试用例,它只是显示警告消息,当它不相等但我的测试用例显示为绿色。我无法在报告中看到任何失败消息。
代码:
this.VerifyAccountHolder=async function(){
var testPromise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(elementAccount.isPresent());
}, 200);
});
var result = await testPromise;
assert.equal(result,true,"wrong result");
警告讯息:
(node:8784)UnhandledPromiseRejectionWarning:未处理的承诺 rejection(拒绝id:1):AssertionError:期望false等于 true(节点:8784)[DEP0018]弃用警告:未处理的承诺 拒绝拒绝。在未来,承诺拒绝 未处理将以非零退出终止Nodejs进程 代码。
如何避免此警告
我想在报告中显示断言错误。我是JavaScript量角器框架的新手。
答案 0 :(得分:0)
您可以通过完全删除承诺来简化整个功能。我真的不确定你为什么需要setTimeout
。该元素将呈现或不存在。您可以将ExpectedConditions.presenceOf()
与browser.wait()
一起使用,但这对我来说似乎是多余的。尽管我不想提出这个建议,如果你真的必须等待200ms才能检查元素是否存在,只需使用browser.sleep()
。我会用它作为最后的手段。如果可以的话,尝试让它工作而不需要任何明确的等待。
this.VerifyAccountHolder = function() {
browser.sleep(200); //only use this if you REALLY need it
return elementAccount.isPresent();
});
然后你应该将断言移到测试而不是将它保留在这个函数中。
it('should be present', async () => {
let result = await pageObjectName.VerifyAccountHolder();
expect(result).toEqual(true);
//or if you prefer to keep using a node assertion instead
//assert.equal(result,true,"element not present");
});