期待(array_values).toBeGreaterThan(SOME_VALUE)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了期待(array_values).toBeGreaterThan(SOME_VALUE)相关的知识,希望对你有一定的参考价值。
我想比较Array值大于某个值。
我试过以下:
this.AllElements = element.all(by.css('[style="display: none"]'));
expect(this.AllElements.getText()).toBeGreaterThan(30);
我想验证this.AllElements.getText()
返回的所有值都应该大于30。
如果所有值都大于30,则每个期望语句都会失败。
答案
一个简单的选择是使用each()
检查数组中的每个文本:
this.AllElements.each(function (elm) {
elm.getText().then(function (text) {
expect(parseInt(text)).toBeGreaterThan(30);
});
});
另一答案
你有不同的方式。第一个是解决量角器返回的承诺,并使用标准的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
回调直接从期望块返回promise。
还要小心处理好所有边缘情况,就像你根本没有文本等...
以上是关于期待(array_values).toBeGreaterThan(SOME_VALUE)的主要内容,如果未能解决你的问题,请参考以下文章