我正在使用 Protractor、Cucumber 和 Chai-As-Promise 我尝试测试搜索字段,并验证每个搜索结果是否包含搜索输入值。当使用 Chai 和 Chai-As-Promised 时,我的原型效果很好。
这是测试用例:用户输入“fruit”,将返回一个项目列表:Apple Fruit、Orange Fruit、Pear Fruit。
我有如下内容:
// 在目标文件中 ...
searchResultField: {
get: function () {
return element.all(by.repeater('result in Fruit'))
}
},
...
// in step file
this.Then(/^display all search result$/, function(callback) {
Page.searchResultField.each(function(element){
element.getText().then(function(value) {
expect(promise.fulfilled(value.indexOf('Fruit') >-1)).to.eventually.be.true.and.notify(callback);
});
});
});
"error_message": "ReferenceError: 未定义承诺
1) 控制台日志中的所有内容都显示为 [object object]。
2) 没有 chai 正如所承诺的那样,Each 和“toContain”或 IndexOf 就像一个魅力一样工作,而且非常直截了当。使用 Chai 和 Chai-As-Promised,我无法让每个方法工作,也无法“循环”水果列表并“期望”每个项目。(注意:“预期”被声明为 chai.expect。
这与其他类似的帖子不同:如何使用带 chai-as-promised 的 Protractor 处理一系列承诺
因为其他贴子知道数组中有多少项,并且具有固定值。就我而言,我不知道数组中的条目数。
另外,如何将promise转换为可读格式:例如,我需要知道
Page.searchResultField.count()
但我只能得到对象值。