javascript - 测试列表中的项目

标签 javascript angularjs testing protractor e2e-testing

我想测试添加到列表中的项目是否具有某种值(value)。我当前的测试如下:

containerDetail.openItemAddModal();

element(by.css('[ng-click="form.section = \'batch\'"]')).click();
element(by.model(batchModel)).sendKeys(batchEntry); // we insert the batch items here
element(by.buttonText('Add')).click();
expect(element.all(by.repeater('item in detail.container.items')).count()).toEqual(6);

// Would like to test that each item has some text
// thinking something like this:    
element.all(by.repeater('item in detail.container.items')).each(function(item) {
    item.getText().then(function(text) {
        expect(text).toBeTruthy();
    });
});

我一直在谷歌上搜索执行此操作的好方法,但没有想出任何办法。

最佳答案

each() 非常适合这里。我会使用来自 jasmine-matcherstoBeNonEmptyString() 匹配器断言有一个非空文本:

element.all(by.repeater('item in detail.container.items')).each(function(item) {
    expect(item.getText()).toBeNonEmptyString();
});

此外,如果您知道添加到列表中的预期值,您可以使用 map() :

var items = element.all(by.repeater('item in detail.container.items')).map(function (item) {
    return item.getText();
});
expect(items).toEqual(["Value 1", "Value 2", "Value 3", "Value 4", "Value 5", "Value 6"]);

关于javascript - 测试列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30334116/

相关文章:

javascript - 如何创建 jQuery 代码以在同一页面中实现多个 slidetoggle?

javascript - 如何让 Sinon.js 假服务器调用成功函数?

javascript - Undefined 不是 Backbone.js 中的函数

javascript - Android 4.4.2 原生浏览器选择和上传文件的网页

javascript - 长数组列表渲染使 Angular.js 中的页面滚动变慢

c# - Entity Framework 在 db.SaveChanges() 期间创建新数据行

AngularJS 1.2.0 $resource 响应为空

performance - 移动应用的 KPI

azure - "Test validations: Expired"在 azure devop 中意味着什么?

javascript - JQuery - 不要在按钮成功/错误上添加悬停类