Я только что начал писать тест-протранс, поэтому я начинаю с этим.
У меня есть следующий угловой код, который я пытаюсь проверить:
<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".
Эти данные поступают с сервера, и я не могу изменить это ради теста. Поэтому я хотел бы, чтобы решение получило список только нужного столбца. Любые параметры для получения точного имени столбца совпадают?
Я обнаружил, что следующие работы:
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, но, похоже, он ведет себя одинаково и дает ожидаемый результат.
Это делается с помощью find.exactRepeater finder. Звучит немного странно, что он изменяет поведение последующего метода column
но он это делает.