问题
<span class="selector-label">Team: </span>
<select class="selector-component" [(ngModel)]="selectedTeamId">
<option *ngFor="#team of teams" [value]="team.id">{{team.name}}</option>
</select>
I am trying to add protractor tests for the selectedTeamId which is the first one sorted alphabetically if one user assigned to multiple teams. I think I should use [(ngModel)]="selectedTeamId", but not sure how to do it. thanks. I know how to get all teams, but I need to get the first one which is the logical implemented in selectedTeamId method.
回答1:
The idea would be to locate the select element (by the preceding label, for example), evaluate teams, sort it alphabetically by name, get the first team and check that this is the same as the selectedTeamId model value:
var select = element(by.xpath("//span[starts-with(., 'Team')]/following-sibling::select"));
select.evaluate("teams").then(function(teams) {
teams.sort(function(a, b) {
return a["name"].localeCompare(b["name"])
});
var firstTeam = teams[0];
expect(select.evaluate("selectedTeamId")).toEqual(firstTeam);
});
来源:https://stackoverflow.com/questions/36378343/how-to-locate-ngmodel-for-protractor-tests