我想比较Array值大于某个值。
我试过以下:
this.AllElements = element.all(by.css('[style="display: none"]'));
expect(this.AllElements.getText()).toBeGreaterThan(30);
我想验证this.AllElements.getText()
返回的所有值都应该大于30.
以上期望语句也会失败。
答案 0 :(得分:2)
一个简单的选择是使用each()
检查数组中的每个文本:
Buffer
答案 1 :(得分:0)
你有不同的方式。第一个是解析量角器返回的承诺,并使用标准Array
方法,every
:
// in this case you need to pass next callback in the block and call it after resolving the method for keeping the sync properly and communicate when the
expectation is finished after resolving the promises
this.AllElementsText = element.all(by.css('[style="display: none"]')).getText();
this.AllElementsText.then((texts) => texts.every((text) => (+text) > 30)).then((value) => { expect(value).toBe(true); next(); });
否则你可以使用像reduce
这样的量角器方法,但要小心解析promises(要调用next
回调的相同注意事项):
this.AllElementsText = element.all(by.css('[style="display: none"]')).getText();
let baseValue = true;
this.AllElementsText.reduce((acc, text) => baseValue && ((+text) > 30), baseValue).then((value) => { expect(value).toBe(true); next(); })
在这两种情况下,您都可以避免next
回调直接从期望块返回承诺。
要小心处理好所有边缘情况,例如你根本没有文字......