如何检查列表是否包含传入的元素 javascript
How to check if a list contains the element passed in javascript
我想检查从应用程序返回的列表是否包含预期的 element.Please 让我知道哪里出错了 :
this.verifyOptionsInDrpDwn = async function(){
var optionList = await drpDwn.all(by.tagName('option')).getText();
console.log(optionList);
var expOptions=['a','b','c','d','e','f'];
for (let i = 0; i < expOptions.length; i++) {
var bool=optionList.includes(expOptions[i]);
console.log(bool);
}
}
output :
[
'1-a',
'2-b',
'3-c',
'4-d',
'5-e',
'6-f'
]
false
includes 确定数组的条目中是否包含某个值。但在您的情况下,您想检查该数组的元素 是否包含 expOptions 的值。
如果替换 var bool=optionList.includes(expOptions[i]);
使用 var bool= optionList.some((a) => a.includes(expOptions[i]));
,它应该可以工作。
我会做不同的事
- 定义一个获取所有值的方法
this.verifyOptionsInDrpDwn = async function(){
return drpDwn.all(by.tagName('option')).getText();
}
- 在您的规范中定义预期数组并进行断言
it('Test spec', async () => {
let expectedArray = ['a','b','c','d','e','f']
expect(await pageObject.verifyOptionsInDrpDwn()).toEqual(expectedArray);
});
这符合最佳实践,您的函数是独立的,所有断言都是测试用例本身的一部分,因为它表明了常识
但从 JavaScript 的角度来看 .every() 才是正确的选择
this.verifyOptionsInDrpDwn = async function(){
var optionList = await drpDwn.all(by.tagName('option')).getText();
var expOptions=['a','b','c','d','e','f'];
return optionList.length === expOptions.length
&& optionList.every(elem => expOptions.includes(elem))
}
未测试,但给了你一个想法
我想检查从应用程序返回的列表是否包含预期的 element.Please 让我知道哪里出错了 :
this.verifyOptionsInDrpDwn = async function(){
var optionList = await drpDwn.all(by.tagName('option')).getText();
console.log(optionList);
var expOptions=['a','b','c','d','e','f'];
for (let i = 0; i < expOptions.length; i++) {
var bool=optionList.includes(expOptions[i]);
console.log(bool);
}
}
output :
[
'1-a',
'2-b',
'3-c',
'4-d',
'5-e',
'6-f'
]
false
includes 确定数组的条目中是否包含某个值。但在您的情况下,您想检查该数组的元素 是否包含 expOptions 的值。
如果替换 var bool=optionList.includes(expOptions[i]);
使用 var bool= optionList.some((a) => a.includes(expOptions[i]));
,它应该可以工作。
我会做不同的事
- 定义一个获取所有值的方法
this.verifyOptionsInDrpDwn = async function(){
return drpDwn.all(by.tagName('option')).getText();
}
- 在您的规范中定义预期数组并进行断言
it('Test spec', async () => {
let expectedArray = ['a','b','c','d','e','f']
expect(await pageObject.verifyOptionsInDrpDwn()).toEqual(expectedArray);
});
这符合最佳实践,您的函数是独立的,所有断言都是测试用例本身的一部分,因为它表明了常识
但从 JavaScript 的角度来看 .every() 才是正确的选择
this.verifyOptionsInDrpDwn = async function(){
var optionList = await drpDwn.all(by.tagName('option')).getText();
var expOptions=['a','b','c','d','e','f'];
return optionList.length === expOptions.length
&& optionList.every(elem => expOptions.includes(elem))
}
未测试,但给了你一个想法