如何在解决承诺之前和之后验证值
How to validate a value before and after a promise is resolved?
我正在使用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后端调用中构建人工延迟时才有效,否则进程显然太快,值将显示为"成功(success)"。
这是一个相当丑陋、不稳定的做法,但无论如何我都会尝试一下:)
it('click test', function () {
$('button').click();
browser.wait(function () {
// Polls 'as fast as possible' until it evalutes to truthy value
// This might be flaky if 'calling' status is shorter than
// 1 polling interval (whose length can't be determined)
return $('div_containing_status').getText().then(function (status) {
return /calling/.test(status);
});
}, 10000);
expect($('div_containing_status').getText()).toBe('calling');
browser.wait(function () {
return $('div_containing_status').getText().then(function (status) {
return /success/.test(status);
});
}, 10000);
expect($('div_containing_status').getText()).toBe('success');
});
更新:基于@alecxe评论
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- 在chrome.tabs.onCreated之后加载HTML页面
- 如何在解决承诺之前和之后验证值
- 为什么不't浏览器在经过身份验证的XMLHttpRequest之后重用授权标头
- 如果字段在几行空行之后包含前几个字符,则验证描述字段长度
- jQuery:在验证错误之后,我的输入掩码函数不会'Don’不要在野外工作
- 在使用jquery验证电子邮件之后添加一个类
- 阻止在 jQuery 验证引擎之后提交
- .each() 在 .clone() 之后用于验证函数
- 有没有我可以听的事件发生在表单提交之后,并且在表单通过HTML5验证之后
- 如何验证允许在 @ 符号之前和之后使用特定数量的点的电子邮件
- 我希望只有在文本字段的焦点之后才能进行验证
- parsleui . adderror之后,Parsley.js的远程验证响应仍然验证为true
- Angular 2:在valueChanges之后更新FormControl验证器
- 在验证之后但在提交之前运行跟踪代码
- 如何在setCustomValidity("…)"之后清除,删除或重置HTML5表单验证状态
- 在第一个表单验证javascript之后移动到第二个表单
- 如何暂停表单提交,最后一次验证,在最后和之后释放/触发/继续提交