我刚刚开始编写量角器测试,所以我是初学者。
我正在尝试测试以下角度代码:
<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'。
这些数据来自服务器,我不能为了测试而改变它。因此,我想要一个解决方案来获取所需列的列表。获取精确列名称的任何选项都匹配?
答案 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语法,但似乎行为相同,并给出了预期的结果。