Ho una direttiva di scorrimento infinito che sto cercando di unit test. Attualmente ho questo:Come testare direttiva AngularJS con scrolling
describe('Infinite Scroll', function(){
var $compile, $scope;
beforeEach(module('nag.infiniteScroll'));
beforeEach(inject(function($injector) {
$scope = $injector.get('$rootScope');
$compile = $injector.get('$compile');
$scope.scrolled = false;
$scope.test = function() {
$scope.scrolled = true;
};
}));
var setupElement = function(scope) {
var element = $compile('<div><div id="test" style="height:50px; width: 50px;overflow: auto" nag-infinite-scroll="test()">a<br><br><br>c<br><br><br><br>e<br><br>v<br><br>f<br><br>g<br><br>m<br>f<br><br>y<br></div></div>')(scope);
scope.$digest();
return element;
}
it('should have proper initial structure', function() {
var element = setupElement($scope);
element.find('#test').scrollTop(10000);
expect($scope.scrolled).toBe(true);
});
});
Tuttavia il .scrollTop (10000); non sembra attivare nulla.
Esiste un modo per unit test questo tipo di funzionalità (io sono in grado di testare unità di altre direttive con interazioni simili come cliccando sugli elementi)?
Nel caso in cui è relativo, questo è il codice di scorrimento infinito:
angular.module('nag.infiniteScroll', [])
.directive('nagInfiniteScroll', [
function() {
return function(scope, elm, attr) {
var raw = elm[0];
elm.bind('scroll', function() {
if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) {
scope.$apply(attr.nagInfiniteScroll);
}
});
};
}
]);
Bene che ha attivato il trigger del codice, tuttavia esso attiverà il codice anche se scrollTop() non è applicabile perché raw.scrollTop, raw. offsetHeight e raw.scrollHeight tutto restituiscono 0 al codice della direttiva. Forse questo è qualcosa che non può essere testato unitamente. – ryanzec
Ho lo stesso problema - sembra che gli elementi non possono avere un pageYOffset/pageXOffset quando non vengono aggiunte a un documento. Aggiungendo l'elemento di documentare non funziona anche "Impossibile leggere proprietà 'createDocumentFragment' di null" – iRaS