Ich habe den folgenden Code:Ist es möglich, lokale Variable in angularjs Fabrik von Karma zu verspotten?
'use strict';
angular
.module('testmodule')
.factory('TestService', ['$q', '$timeout',
function ($q, $timeout) {
var timeoutRetries = 0; // brauchen diese
var api = new TestApi();
function getResults(id, prevDeferred) {
var deferred = prevDeferred || $q.defer();
function handleSuccessResponse(data) {
if (data.status === 'ready') {
results.put(id, data);
deferred.resolve(data);
} else {
von hier zu verspotten if (++ timeoutRetries> 30) {// Es wird nicht in hier
handleErrorResponse();
} else {
$timeout(function() {
getResults(id, deferred);
}, 2000);
}
}
}
function handleErrorResponse(response) {
deferred.reject(response);
}
if (results.get(id)) {
deferred.resolve(doSomething.get(id));
return deferred.promise;
}
api.get({id: id}).then(handleSuccessResponse, handleErrorResponse);
return deferred.promise;
}
return {
getResults: getResults
};
}]);
Ich bin versuchen, den timeoutRetries-Eintrag aus Karma zu verspotten, aber ich bin nicht in der Lage, es zu tun. Ist es der ideale Weg, um es zu deklarieren oder sollte ich die Variable in eine Funktion verschieben und aktualisieren wollen oder was ist der beste Weg, um es von Karma nachzuahmen?
Versucht mit inject, erklärte die Variable vor dem Aufruf der Funktion. Immer noch kein Erfolg.
Mögliche Betrogene von http://stackoverflow.com/questions/9619500/using-jasmine-to-spy-on-variables-in-a -Funktion –
@MuthukannanKanniappan - Ich denke, Sie haben meine Frage falsch verstanden, die Verbindung, die Sie zur Verfügung gestellt ergibt in Funktion, wo ich in der Fabrik schaue. Ähnliche Frage: http://stackoverflow.com/questions/26938842/how-doi-i-mock-local-variable-for-a-function-in-a-service-jasmine-karma-tests. Aber ich bin immer noch auf der Suche nach einer guten Antwort. – Mithun