Angular的量角器测试:如何获得列名的精确匹配

时间:2015-06-29 16:12:35

标签: angularjs protractor

我刚刚开始编写量角器测试,所以我是初学者。

我正在尝试测试以下角度代码:

<tr ng-repeat="identifier in contentIdentifiers">
    <td>{{identifier.contentIdentifier}}</td>
    <td>{{identifier.contentIdentifierTypeDescription}}</td>
    <td>{{identifier.licensedWebsiteIdentifier}}</td>
</tr>

其中内容标识符具有以下值:

contentIdentifiers = [
    {
        contentIdentifier: '123-123-1-ABC',
        contentIdentifierTypeDescription: 'DOI',
        licensedWebsiteIdentifier: 'TEST WEBSITE'
    },
    {
        contentIdentifier: 'ABC-DEF',
        contentIdentifierTypeDescription: 'ISBN',
        licensedWebsiteIdentifier: 'TEST WEBSITE'
    },
];

这是我的相关量角器片段:

var identifier = element.all(by.repeater("identifier in contentIdentifiers").column("identifier.contentIdentifier"));
expect(identifier.get(0).getText()).toEqual("123-123-1-ABC");
expect(identifier.get(1).getText()).toEqual("ABC-DEF");

我得到错误:  期望'DOI'等于'ABC-DEF'。

如果我将其更改为:

expect(identifier.get(2).getText()).toEqual("ABC-DEF");
然后它就过去了。

由此我认为问题是列(“identifier.contentIdentifier”)也匹配'contentIdentifierTypeDescription'。

这些数据来自服务器,我不能为了测试而改变它。因此,我想要一个解决方案来获取所需列的列表。获取精确列名称的任何选项都匹配?

2 个答案:

答案 0 :(得分:1)

这是通过使用by.exactRepeater查找程序完成的。它修改后续column方法行为但it does听起来有点奇怪。

答案 1 :(得分:0)

我发现以下工作:

var identifier = element.all(by.repeater("identifier in contentIdentifiers"))
                        .all(by.exactBinding("identifier.contentIdentifier"))
expect(identifier.get(0).getText()).toEqual("123-123-1-ABC");
expect(identifier.get(1).getText()).toEqual("ABC-DEF");

它不是.column语法,但似乎行为相同,并给出了预期的结果。