我使用的是Protractor,Cucumber和Chai-As-Promise
我尝试测试搜索字段,并验证每个搜索结果是否包含搜索输入值。当Chai和Chai-As-Promised被使用时,我的原型很有效
以下是测试用例:用户输入“水果”,将返回项目列表: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)所有内容在控制台日志中显示为[对象对象] 2)没有像承诺的那样,每一个,和“toContain”或IndexOf的工作就像一个魅力,而且很直接。有了Chai和Chai-As-Promised,我无法使每个方法工作,也无法“循环”Fruit列表并“期望”每个项目。 (注意:“期望”被声明为chai.expect 这与其他类似的帖子不同:How do I handle an array of promises using Protractor w/ chai-as-promised
因为其他帖子知道数组中有多少项,并且具有固定值。在我的情况下,我不知道我的数组中的条目数。
此外,如何将承诺转换为可读格式:例如,我需要知道
的值Page.searchResultField.count()
但我只能获得对象值。