Angularjs 以角度形式在字段中循环并使用量角器测试输入验证?
我是一个初学者&我正在尝试以角度形式遍历所有字段,并使用量角器测试输入验证是否有效。到目前为止,我失败得很惨。我的伪代码如下:Angularjs 以角度形式在字段中循环并使用量角器测试输入验证?,angularjs,testing,protractor,Angularjs,Testing,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
//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));
}
}
});
description('Sample form',function()){
//需要输入验证的字段
var userName=element(by.model('user.name');//必填字段
var username=element(by.model('user.姓氏');//必填字段
var userId=element(by.model('user.id');//必填字段
//试验群体
var fieldsRequired=[userName,userName,userId];//要测试的字段
//用于检查指定元素-->ng valid/ng invalid等的类的帮助器函数。
var hasClass=函数(元素,cls){
返回元素.getAttribute('class')。然后(函数(类){
返回类。拆分(“”).indexOf(cls)!=-1;
});
};
//测试功能
需要功能测试(需要字段){
//1.循环遍历每个字段
对于(变量i=0;i
您的代码中有几个问题:
it
块将永远不会执行,因为您没有调用testRequired
函数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);
};
});