ich den folgenden Dienst in meinem Winkel App definiert haben:Warum erhalte ich Fehler ... unerwartete Anfrage: GET/internalapi/quotes
services.factory('MyService', ['Restangular', function (Restangular) {
return {
events : { loading : true },
retrieveQuotes : function() {
return Restangular.all('quotes').getList().then(function() {
return { hello: 'World' };
});
}
};
}]);
und ich schreibe die folgende Spezifikation zu testen:
describe("MyService", function() {
beforeEach(module('MyApp'));
beforeEach(module("restangular"));
var $httpBackend, Restangular, ms;
beforeEach(inject(function (_$httpBackend_, _Restangular_, MyService) {
ms = MyService;
$httpBackend = _$httpBackend_;
Restangular = _Restangular_;
}));
it("retrieveQuotes should be defined", function() {
expect(ms.retrieveQuotes).toBeDefined();
});
it("retrieveQuotes should return array of quotes", function() {
$httpBackend.whenGET("internalapi/quotes").respond({ hello: 'World' });
ms.retrieveQuotes();
$httpBackend.flush();
});
});
Immer, wenn ich die Tests ausführen, der erste Test, aber der zweite Test bestanden wird erzeugt den Fehler:
Error: Unexpected request: GET /internalapi/quotes
Was mache ich falsch?
EDIT:
Es stellte sich heraus, dass ich Restangular
wie so ... RestangularProvider.setBaseUrl("/internalapi");
konfiguriert hatte. Aber ich habe gefälschte Anrufe an internalapi/quotes
. Beachten Sie das Fehlen des "/". Sobald ich den Schrägstrich /internalapi/quotes
hinzugefügt hatte, war alles gut :)
http://stackoverflow.com/questions/14761045/jasmine-tests-angularjs-directives-with-templateurl (I als Duplikat nicht Flagge tat, weil die Probleme scheinen bis zu einem gewissen Grad anders zu sein). –
Bitte denken Sie daran, Ihre Frage als gelöst zu markieren, basierend auf Ihrer Bearbeitung sieht es so aus, als wäre sie behoben worden. :) –
Es kann für andere offensichtlich sein, aber falls nicht, erwarten diese 'expectMETHOD'-Aufrufe, dass Sie die vollständige URL übergeben, nicht nur den Pfad, wenn Sie externe Dienste aufrufen. – kungphu