早上好,
我已经开始在量角器(Angular应用程序)中重构测试用例。我发现测试用例应使用async await
方法编写,但我也尝试过browser.wait
,我认为这与上述方法等效。这是正确的吗?在下面添加代码示例。
async function (msg) {
await main.getMessagesFromConversation()
.then((bodyMessage) => expect(bodyMessage).to.equal(msg));
}
与browser.wait相同
function (msg) {
return browser.wait(main.getMessagesFromConversation()
.then((bodyMessage) => expect(bodyMessage).to.equal(msg)), 5000);
}
答案 0 :(得分:0)
没有async/await
与browser.wait
不同。
异步/等待是一种处理诺言的JavaScript样式。量角器框架内的所有浏览器交互(以及许多其他功能)都隐藏在幕后。这是因为Protractor所依赖的webdriverJS完全是异步的。量角器使用Promise允许按更容易编写的顺序执行代码。
最初,webdriverJS提供了一个称为控制流的功能,该功能允许在后台处理所有这些承诺。由于webdriverJS版本4(我相信)已弃用,并且从量角器版本6.0+起,量角器现在使用webdriverJS 4,因此它的控制流在量角器中也已弃用。 Async/await
是处理这些承诺的一种更简单,更直接的方法。
在量角器async/await
中,可以替代.then.catch()
。因此,对于您的示例,您只需编写以下内容即可:
async function (msg) {
let conversationMsgs = await main.getMessagesFromConversation()
expect(conversationMsgs).to.equal(msg));
}
browser.wait 是一个命令,用于暂停执行,直到解决了特定的承诺或条件或达到超时期限为止。通常用于等待元素出现在页面上,但也可以有许多其他用途。