我有以下函数来查看我的转发器中的绑定(例如{{car.details.year}}
)是否与预期绑定数组匹配。
var ngrepeat = 'car in filteredInventory = (vm.vehicles | filter: search | orderBy:vm.sort.value)',
expectVehicleColumns = function(binding, expectations, name) {
element.all(By.repeater(ngrepeat).column(binding)).then(function(arr) {
//This fails when I add a filter
expect(arr.length, 'Number of displayed vehicles').to.eql(expectations.length);
arr.forEach(function(wd, i) {
wd.getText().then(function(text) {
console.log(text);
expect(text, name).to.eql(expectations[i]);
});
});
});
};
然后实现了这样的
expectVehicleTitles = function(expectedVehicleTitles) {
var binding = '{{car.details.year}} {{car.details.make}} {{car.details.model}} {{car.details.trim}}';
expectVehicleColumns(binding, expectedVehicleTitles, 'Vehicle Title');
};
当我没有过滤器时它可以正常工作,它可以看到转发器中的所有车辆。但是,当我在执行element(By.model('filter')).sendKeys('some filter');
之后运行该函数时,即使它在浏览器上看起来很好,数组长度也是0。
注意filter: search
因为search
是一种使用$scope.filter