tôi đã xác định các dịch vụ sau đây trong ứng dụng góc của tôi:Tại sao tôi nhận được lỗi ... theo yêu cầu đột xuất: GET/internalapi/dấu ngoặc kép
services.factory('MyService', ['Restangular', function (Restangular) {
return {
events : { loading : true },
retrieveQuotes : function() {
return Restangular.all('quotes').getList().then(function() {
return { hello: 'World' };
});
}
};
}]);
và tôi đang viết spec sau để kiểm tra nó:
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();
});
});
Bất cứ khi nào tôi chạy các bài kiểm tra, thử nghiệm đầu tiên trôi qua nhưng các thử nghiệm thứ hai tạo ra lỗi:
Error: Unexpected request: GET /internalapi/quotes
Tôi đang làm gì sai?
EDIT:
Hóa ra tôi đã cấu hình Restangular
như vậy ... RestangularProvider.setBaseUrl("/internalapi");
. Nhưng tôi đã giả mạo các cuộc gọi đến internalapi/quotes
. Chú ý sự thiếu "/". Khi tôi đã thêm dấu gạch chéo /internalapi/quotes
tất cả đều tốt :)
http://stackoverflow.com/questions/14761045/jasmine-tests-angularjs-directives-with-templateurl (tôi không cờ như trùng lặp, vì các vấn đề có vẻ khác nhau ở mức độ nào đó). –
Hãy nhớ đánh dấu câu hỏi của bạn là đã được giải quyết, dựa trên chỉnh sửa của bạn có vẻ như nó đã được sửa. :) –
Có thể rõ ràng với người khác, nhưng trong trường hợp không, các cuộc gọi 'expectMETHOD' này mong bạn chuyển vào URL đầy đủ, không chỉ đường dẫn, nếu bạn đang gọi các dịch vụ bên ngoài. – kungphu