Angular 的量角器测试:如何获得列名的精确匹配
Protractor test for Angular: how to get exact match for column name
我刚开始编写量角器测试,所以我是初学者。
我正在尝试测试以下 angular 代码:
<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");
然后就过去了。
从这里我认为问题是 column("identifier.contentIdentifier") 也匹配 'contentIdentifierTypeDescription'.
这个数据来自服务器,为了测试我不能改变这个。因此,我想要一个解决方案来仅获取所需列的列表。是否有获得精确列名匹配的选项?
这是通过使用 by.exactRepeater finder. It sounds a bit weird that it modifies the subsequent column
method behaviour but it does 完成的。
我发现以下有效:
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 语法,但它的行为方式似乎相同,并给出预期的结果。
我刚开始编写量角器测试,所以我是初学者。
我正在尝试测试以下 angular 代码:
<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");
然后就过去了。
从这里我认为问题是 column("identifier.contentIdentifier") 也匹配 'contentIdentifierTypeDescription'.
这个数据来自服务器,为了测试我不能改变这个。因此,我想要一个解决方案来仅获取所需列的列表。是否有获得精确列名匹配的选项?
这是通过使用 by.exactRepeater finder. It sounds a bit weird that it modifies the subsequent column
method behaviour but it does 完成的。
我发现以下有效:
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 语法,但它的行为方式似乎相同,并给出预期的结果。