ich manuell nach der Antwort auf einen API-Aufruf meinen Eckige App Bootstrap (und entsprechende Einstellung eines konstanten), also:
(function() {
var myApp = angular.module('myApp');
// Bootstrap the app once we've got a config
var initInjector = angular.injector(['ng']);
var $http = initInjector.get('$http');
$http.get('/api/configs').then(
function(response) {
myApp.constant('myConfig', response.data);
bootstrapApp();
},
function(error) {
console.log('Unable to get config', error);
}
);
function bootstrapApp() {
angular.element(document).ready(function() {
angular.bootstrap(document, ['myApp']);
});
}
})();
Dies verhindert, dass meine Tests ausgeführt werden, da der Aufruf $http
nicht verspottet wird.
04 07 2017 14:05:53.965:WARN [karma]: No captured browser, open http://localhost:9876/
04 07 2017 14:05:53.987:INFO [karma]: Karma v1.3.0 server started at http://localhost:9876/
04 07 2017 14:05:55.169:INFO [Chrome 59.0.3071 (Linux 0.0.0)]: Connected on socket /#y-gZChEZ25VdBB7YAAAA with id manual-6637
04 07 2017 14:05:56.270:WARN [web-server]: 404: /api/configs
Wie Sie sehen können, ist der /api/configs
Anruf unsurprisingly 404'ing.
Ich kann nicht meinen Kopf herum, wie man das verspotten. Wenn Sie einen Test für dieses Modul erstellen und sich über den $http
-Aufruf lustig machen, wird das Problem nicht behoben, da der Anruf gerade erfolgt, wenn Karma die App startet.
Es fühlt sich an, als ob ich einen "globalen" $http
Mock brauche, der dem Testläufer zur Verfügung steht, wenn er startet. Aber ich könnte komplett den falschen Baum bellen.
Hat jemand irgendwelche Gedanken? Vielen Dank! :)