2

我正在使用 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()

但我只能得到对象值。

4

0 回答 0