gpt4 book ai didi

angularjs - 循环遍历 Angular 表单中的字段并使用 Protractor 测试输入验证?

转载 作者:行者123 更新时间:2023-11-28 20:23:06 27 4
gpt4 key购买 nike

我是初学者,我正在尝试循环遍历 Angular 表单中的所有字段,并使用 Protractor 测试输入验证是否有效。到目前为止,我失败得很惨。我的伪代码如下:

//PSEUDO CODE FOR TEST PROCESS:
//------------------------------
// 1.For each field requiring validation
// 2.Reset test environment
// 3.Populate field with dummy data
// 4.Get result
// 5.Evaluate result versus expectation for test type
// 6.Pass test description & test result (true/false) to Protractor to print to command line

我写的代码如下。这不是很好,我什至不确定是否可以在不为每个字段的每个验证测试指定单独测试的情况下实现我的目标。我做错了什么/正确的方法是什么?

describe('Sample form', function() {

// Fields subject to input validation
var userName = element(by.model('user.name')); // required field
var userSurname = element(by.model('user.surname')); // required field
var userId = element(by.model('user.id')); // required field

// Test population
var fieldsRequired = [userName, userSurname, userId]; // fields to be tested

// helper function to check class of a specified element --> ng-valid / ng-invalid etc.
var hasClass = function (element, cls) {
return element.getAttribute('class').then(function (classes) {
return classes.split(' ').indexOf(cls) !== -1;
});
};

// The testing function
function testRequired(fieldsRequired) {
//1. loop through each field
for (var i = 0; i < fieldsRequired.length; i++) {

//2. Reset page prior to each test
browser.get('http://sometestlink.html');

//3. Populate field with dummy data
fieldsRequired[i].sendkeys();

//4,5 & 6. Protractor test
it('should fail validation when ' + fieldsRequired[i] + ' is missing', expect(hasClass(fieldsRequired[i],'ng-valid')).toEqual(false));
}
}
});

最佳答案

您的代码中存在一些问题:

  1. 你的 it block 将永远不会被执行,因为你没有调用 testRequired 函数
  2. sendkeys() 应该是 sendKeys(),你没有发送任何文本,它是空的

您可以尝试实现您所描述的内容:

describe('Sample form', function() {

// helper function to check class of a specified element --> ng-valid / ng-invalid etc.
var hasClass = function (element, cls) {
return element.getAttribute('class').then(function (classes) {
return classes.split(' ').indexOf(cls) !== -1;
});
};

var fields = {
'userName': element(by.model('user.name')),
'userSurname': element(by.model('user.surname')),
'userId': element(by.model('user.id'))
};

for(var field in fields) {
(function(field) {
it('should fail validation when ' + field + ' is missing', function () {
browser.get('http://sometestlink.html');
fields[field].sendKeys('dummy_data');
expect(hasClass(fields[field], 'ng-valid')).toEqual(false);
});
})(field);
};
});

关于angularjs - 循环遍历 Angular 表单中的字段并使用 Protractor 测试输入验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33430320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com