检查新元素是否已添加到量角器中的表中

时间:2016-04-28 15:42:28

标签: angularjs jasmine protractor karma-runner angular-promise

在我的Angular应用程序中,我有一个表(确切地说是ng-grid),我有一个向它添加新元素的过程。我为您省去了详细信息,但程序是多步骤的,涉及与服务器通信并在ng-grid表中生成一个新项目。我知道新项目的名称,我想检查我的量角器测试,确实已经添加了这个项目。这就是我尝试这样做的方式:

 var nameTestItem="mySuperItem";
 //... some actions to add the element, and going back to the page with the table 
 browser.get('#/resTable');

//checking if there is new item with this title
var element_added=false;
//picking the cell of the table with css selector and searching for the text
element.all(by.css('div.ui-grid-cell-contents')).then(function(elements) {
    _.forEach(elements, function(el) {
        el.getText().then(function(text){
            console.log(text);
            element_added= element_added || (nameTestItem==text);
        });
    });
});
browser.sleep(1000);

browser.pause();
expect(element_added).toBeTruthy();
显然我的问题是我处理了许多承诺。你会如何解决这个问题?我真的不想依赖count()因为当几个人执行测试时我不想要碰撞。

1 个答案:

答案 0 :(得分:3)

我改用filter()

var results = element.all(by.css('div.ui-grid-cell-contents')).filter(function(elm) {
    return elm.getText().then(function(text) {
        return nameTestItem === text;
    });
});
expect(results.count()).toEqual(1);

并且,如果您使用jasmine-matchers,则更具可读性:

expect(results).toBeNonEmptyArray();