【发布时间】:2016-05-05 04:32:30
【问题描述】:
我正在使用 Protractor 为 Angular 1.5 应用程序创建端到端测试。该应用程序允许用户通过使用标准input type="file" 控件和submit 按钮选择文件,将文件上传到后端Web API。我有一个控制器,它的行为基本上是这样的:
function exampleController() {
var vm = this;
vm.status = "";
vm.buttonClickHandler = buttonClickHandler;
function buttonClickHandler() {
vm.status = "calling";
service.makeAsyncCall()
.then(function() {
vm.status = "success";
}, function() {
vm.status = "error";
});
}
}
当用户点击submit按钮时调用buttonClickHandler。
如何使用 Protractor 编写端到端测试,验证用户单击按钮时状态是否变为“正在调用”,然后在承诺解决时变为“成功”?
在我的大多数尝试中,我可以验证vm.status 是否已设置为“成功”,或如果我设置ignoreSynchronization = true,我可以验证它是否设置为“正在调用”,但后者仅在我在我的 Web API 后端调用中构建人为延迟时起作用,否则该过程显然太快并且值将显示“成功”。
【问题讨论】:
-
UI 端是否有任何迹象表明
status发生了变化? -
@alecxe 是的,UI 正确显示了我想要的
status更改。我似乎无法在自动化测试中捕获它们。 -
知道了。是否有一个带有状态文本的元素或一个加载微调器,我们可以检查而不是访问控制器中的字段?谢谢。
-
当然,状态只是绑定到这样的 div:
<div>{{vm.status}}</div>,我使用element(by.binding("vm.status"))在量角器中访问它,这给了我正确的元素。
标签: javascript angularjs promise protractor