validation - 量角器:验证强制性输入或处理承诺
问题描述
我正在用几十个输入测试表单,主要是文本框。为了用户创建/编辑帐户,必须输入几个文本。但是,我很困惑:
describe('Validation of mandatory fields', () => {
it('validate first name input', () => {
expertInfo.firstNameTextBox.click();
expertInfo.firstNameTextBox.sendKeys(Key.CONTROL + 'a', Key.DELETE);
expertInfo.firstNameTextBox.sendKeys(Key.ENTER);
expect(expertInfo.requiredFieldMessage.isPresent()).toBe(true); // this one pass
});
it('validate last name input', () => {
expertInfo.lastNameTextBox.click().then(() => {
expertInfo.lastNameTextBox.clear().then(() => {
expertInfo.save();
expect(expertInfo.requiredFieldMessage.isPresent()).toBe(true); // this one fails
});
});
});
});
知道我的方法有什么问题吗?我是否正确处理了承诺?在第二个测试中,验证消息不会出现,用户可以编辑/创建帐户。
解决方案
在 protractor/jasmine 中,有 3 种处理异步任务的方法,
1- Async/await
2- Promises
3- CallBacks 更多信息:https ://jasmine.github.io/tutorials/async
个人偏向于 async/await,因为它是最容易跟踪的。因此,在您的代码中,如果您想处理使用 async/await 返回的承诺,它将转换为:
describe('Validation of mandatory fields', () => {
it('validate first name input', async () => {
await expertInfo.firstNameTextBox.click();
await expertInfo.firstNameTextBox.sendKeys(Key.CONTROL + 'a',
Key.DELETE);
await expertInfo.firstNameTextBox.sendKeys(Key.ENTER);
expect(await expertInfo.requiredFieldMessage.isPresent()).toBe(true);
});
it('validate last name input', async () => {
await expertInfo.lastNameTextBox.click();
await expertInfo.lastNameTextBox.clear();
await expertInfo.save();
expect(await expertInfo.requiredFieldMessage.isPresent()).toBe(true);
});
});
在此期间,请走开!
推荐阅读
- ios - 如何在firebase中获取键的值 - iOS
- node.js - React 中的服务器端渲染对动态呈现有帮助吗?
- laravel - 即使我成功登录,Laravel 中间件也总是重定向回登录页面
- javascript - I want to checked my all checkbox from one checkbox
- java - spring 中的 application-Context.xml 错误
- php - 使用 curl 远程服务器与同一台服务器进行多少并发连接
- asynchronous - SIGNAL vs Esterel vs Lustre
- twilio - 我们可以在 twilio 可编程聊天中搜索聊天吗?
- sql - 计算缺失值
- ios - 如何在 ios swift 中将数据附加到 NSMutableArray