如何在承诺中处理chai中的element.all(locator).each(eachFunction)

时间:2015-07-06 06:49:07

标签: cucumber protractor chai chai-as-promised

我使用的是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()

但我只能获得对象值。

0 个答案:

没有答案