Ich mache eine Direktive Einheit Test mit Jasmin.
Ich habe diesen Test jetzt arbeiten, aber ich muss die $.fn
mit dem Äquivalent für AngularJS ersetzen,
-Code (weil in meiner Firma sie uns nicht $
lassen verwenden):
(function scrollTopEventDirective(application) {
'use strict';
application.services.directive('scrollTopEvent', ['$rootScope', function scrollTopEvent($rootScope) {
return {
restrict: 'A',
link: function link(scope, element, attrs) {
$rootScope.$on(attrs.scrollTopEvent, function onScope(event, top) {
element.animate({ scrollTop: top || 0 }, 500);
});
}
};
}]);
})(window.application);
Test:
(function scrollTopEventTest() {
'use strict';
describe('Directive: scrollTopEvent', function scrollTopEvent() {
beforeEach(module('app'));
var $compile, $scope;
beforeEach(inject(function beforeFunction(_$compile_, $rootScope) {
$compile = _$compile_;
$scope = $rootScope.$new();
}));
describe('Scroll set top property', function scrollTopEventTest() {
it('should call the scroll top event without value', function scrollTopEventTest() {
var div = angular.element('<div style="overflow:scroll; width:100px; height:100px;" scroll-top-event="main-scroll-top"><br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x</div>');
$compile(div)($scope);
spyOn($.fn, 'animate');
$scope.$emit('main-scroll-top');
$scope.$digest();
expect(div.animate).toHaveBeenCalledWith({scrollTop: 0}, 500);
});
});
})();
Frage macht keinen Sinn. '$ .fn' ist sehr spezifisch für jQuery. Angular ist konzeptionell anders als jQuery und hat kein "Äquivalent" zu "$ .fn". Wenn Ihre Firma "$" nirgendwo in Ihrem Code erlaubt, werden Sie mit Angular kämpfen. –
Ich verstehe, wie kann ich $ .fn mit angle.element oder etwas ähnliches ersetzen? –
Um was zu tun? Sie haben nicht erklärt, was Sie erreichen müssen. Bitte nehmen Sie sich etwas Zeit, um [ask] zu lesen. – charlietfl