definiert wird. Mit angularem 1.4.8 und Karma 0.13.19 möchte ich einen $ on Callback auslösen, der in einem Link definiert ist, um dann zu testen, dass er die Eigenschaften des Scopes entsprechend der Daten, die der Rückruf erhält.
Hier ist meine Richtlinie
(function() {
'use strict';
angular.module('error').directive('errorPopup', function() {
return {
restrict: 'AE',
replace: true,
scope: {},
templateUrl: 'components/error/error_popup-template.html',
link: function (scope, element, attrs) {
scope.$on('_REQUEST_ERROR_', function (event, response) {
scope.error = response;
console.log('on _REQUEST_ERROR_; scope.error: ', scope.error);
element.modal();
});
}
};
});
})();
hier mein Test
describe('Error-Popup Directive', function(){
var $templateCache,
scope,
element,
elementScope,
$compile,
listener = {},
response;
beforeEach(module('error'));
beforeEach(inject(function ($templateCache, $compile, $rootScope) {
response = {
'data': {
'code': 'INVALID_AUTH_TOKEN',
'message': 'Authentication token is missing'
}
};
$templateCache.put('components/error/error_popup-template.html', '<div>some html</div>');
element = angular.element('<error-popup></error-popup>');
scope = $rootScope.$new();
// elementScope = element.scope;
spyOn(scope, '$on').and.callFake(function(event, callback) {
// Store event listeners for later access.
console.log('event:', event);
listener[event] = callback;
console.log('listener['+event+']:', listener[event]);
});
$compile(element)(scope);
scope.$digest();
}));
describe('scope.$on(\'_REQUEST_ERROR_\', callback)', function(){
beforeEach(function(){
listener['_REQUEST_ERROR_']({}, response);
console.log('scope:', scope);
});
it('should set scope.error to response', function() {
expect(scope.error).toEqual(response);
});
});
});
Aber ich bin TypeError: 'undefined' is not a function (evaluating 'listener['_REQUEST_ERROR_']({}, response)'
immer
Es ist wie Link-Funktion sieht heißt nie Umfang ist so. $ Auf .
Hat jemand eine Idee, wie ich das erreichen könnte? Danke
Ich bin in der Lage, ein Ereignis zu senden, aber stellt fest, scope.error bleibt undefiniert, wenn sie es testen, auch nachdem es Listener-Callback durchlaufen und scope.error wurde ordnungsgemäß festgelegt (console.log attestiert es) – svassr
haben Sie den Umfang tun . $ apply()? – sdfacre
Nein, wann soll ich 'scope. $ apply()'? – svassr