期待(array_values).toBeGreaterThan(SOME_VALUE)

时间:2017-12-22 23:12:22

标签: javascript selenium protractor

我想比较Array值大于某个值。

我试过以下:

this.AllElements = element.all(by.css('[style="display: none"]'));
expect(this.AllElements.getText()).toBeGreaterThan(30);

我想验证this.AllElements.getText()返回的所有值都应该大于30.

每次即使所有值都大于30,

以上期望语句也会失败。

2 个答案:

答案 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回调直接从期望块返回承诺。

要小心处理好所有边缘情况,例如你根本没有文字......