के साथ AngularJS निर्देश का परीक्षण कैसे करें मेरे पास एक अनंत स्क्रॉल निर्देश है कि मैं इकाई परीक्षण करने की कोशिश कर रहा हूं। वर्तमान में मेरे पास यह है:स्क्रॉलिंग
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);
});
});
हालांकि .scrollTop (10000); कुछ भी ट्रिगर नहीं लग रहा है।
क्या इस प्रकार की कार्यक्षमता इकाई परीक्षण करने के लिए वैसे भी है (मैं तत्वों पर क्लिक करने जैसे समान इंटरैक्शन के साथ अन्य निर्देशों का परीक्षण करने में सक्षम हूं)?
मामले में यह सापेक्ष है, इस अनंत स्क्रॉल कोड है:
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);
}
});
};
}
]);
अच्छी तरह से कोड ट्रिगर बनाया गया है, हालांकि यह स्क्रॉलटॉप() लागू नहीं होने पर भी कोड को ट्रिगर करेगा क्योंकि कच्चे.scrollTop, कच्चे। ऑफसेट हाइट, और raw.scrollHeight सभी निर्देशक कोड के भीतर 0 का मूल्यांकन करते हैं। शायद यह ऐसा कुछ है जो यूनिट परीक्षण नहीं किया जा सकता है। – ryanzec
मेरे पास एक ही समस्या है - ऐसा लगता है कि जब तत्व किसी दस्तावेज़ में नहीं जोड़े जाते हैं तो तत्वों के पास पृष्ठ YOffset/pageX ऑफ़सेट नहीं हो सकता है। दस्तावेज़ में तत्व जोड़ना भी काम नहीं कर सकता है "संपत्ति को पढ़ नहीं सकता 'createDocumentFragment' null" – iRaS