Jasmine zum ersten Mal zu lernen und ich bin auf diesen Fehler beim Versuch, die Fokus() -Funktion in einem eckigen Service zu testen stecken. Hier ist der Service:angularjs + jasmine: test fokus in einem service
myApp.service('MyService', function($timeout, $window) {
var service = {
focusElem: focusElem
};
return service;
function focusElem(id) {
console.log('id of element is = ', id);
if (id) {
$timeout(function() {
var element = $window.document.getElementById(id);
console.log('element is = ', element);
if (element) {
element.focus();
}
});
}
};
});
Hier ist meine Spec-Datei
describe('myApp', function() {
var element, dummyElement;
beforeEach(function() {
// Initialize myApp injector
module('myApp');
// Inject instance of service under test
inject(function($injector) {
MyServiceObj = $injector.get('MyService');
});
element = angular.element('<input id="firstName" name="firstName"/>');
dummyElement = document.createElement('input');
dummyElement.setAttribute('id', 'lastName');
});
it('should have focus if the focus Service is used on an element', function() {
console.info('------------------');
spyOn(element[0], 'focus');
spyOn(dummyElement, 'focus');
MyServiceObj.focusElem(dummyElement.getAttribute('id'));
expect(dummyElement.focus).toHaveBeenCalled();
});
});
Mein Fehler:
myApp should have focus if the focus Service is used on an element
Expected spy focus to have been called.
Error: Expected spy focus to have been called.
Mögliches Duplikat von [Jasmine mock chained Methoden mit Karma und Angular] (http://stackoverflow.com/questions/36285896/jasmine-mock-chained-methods-with-karma-and-angular) – estus
Siehe auch http: //stackoverflow.com/a/33742298/3731501 Wenn "focus" ausspioniert ist "callThrough" und ein Fokusereignis auslöst. – estus
Hat dies für Sie funktioniert? – tasseKATT