我有一个字符串数组,我需要允许重复。
vm.list = ["item","item","item","item","item"]
这是在带有
的html中处理的<ul class="listItems>
<li ng-repeat="item in ctrl.list track by $index"></li>
</ul>
这显示在DOM中没有问题,但是当我尝试量角器测试ng-repeat时遇到问题,因为我无法对其进行单元测试。
所以我的测试就像是。
Then("List items should contain {int} items.", function(listLength){
return element(by.css(".listItems").all(by.repeater('item in ctrl.list track by $index')).then(function(list){
return expect(list.length).equal(listLength);
});
});
我运行我的测试,它失败,Expect 0为5 但是,如果我将它们都制作成独一无二的,它可以解决这个问题吗?
答案 0 :(得分:0)
我相信这对你有用:
Then("List items should contain {int} items.", function(listLength){
let list = element(by.css(".listItems").all(by.repeater('item in ctrl.list'));
expect(list.count()).toBe(listLength);
});
来源:http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.count
编辑:抱歉,我误解了您的问题,似乎track by
无法处理数组中的重复值。见:https://docs.angularjs.org/api/ng/directive/ngRepeat。您可以替换自己的跟踪功能。
以下是类似问题的示例:https://stackoverflow.com/a/28232640/3111958
第二次编辑:再观察一下,量角器不会逐个使用轨道。我更新了代码块以反映这一点。看看这个问题:https://stackoverflow.com/a/37535098/3111958