angularjs – 为什么我收到错误…意外的请求:GET/internalapi/q
发布时间:2020-12-17 08:59:52 所属栏目:安全 来源:网络整理
导读:我在我的角度应用程序中定义了以下服务: services.factory('MyService',['Restangular',function (Restangular) { return { events : { loading : true },retrieveQuotes : function() { return Restangular.all('quotes').getList().then(function() { ret
我在我的角度应用程序中定义了以下服务:
services.factory('MyService',['Restangular',function (Restangular) { return { events : { loading : true },retrieveQuotes : function() { return Restangular.all('quotes').getList().then(function() { return { hello: 'World' }; }); } }; }]); 我写下面的规范来测试它: 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(); }); }); 每当我运行测试时,第一个测试通过,但第二个测试产生错误: 错误:意外请求:GET / internalapi / quotes 我究竟做错了什么? 编辑: 原来我配置Restangular像这样… RestangularProvider.setBaseUrl(“/ internalapi”);.但我是伪造调用internalapi / quotes。注意缺少“/”。一旦我添加了斜杠/ internalapi / quotes都是好:)
你需要告诉$ httpBackend期望一个GET请求。
describe("MyService",function () { beforeEach(module('MyApp')); beforeEach(module("restangular")); var Restangular,ms; beforeEach(inject(function (_Restangular_,MyService) { ms = MyService; Restangular = _Restangular_; })); it("retrieveQuotes should be defined",inject(function ($httpBackend) { $httpBackend.whenGET("internalapi/quotes").respond({ hello: 'World' }); //expect a get request to "internalapi/quotes" $httpBackend.expectGET("internalapi/quotes"); ms.retrieveQuotes(); $httpBackend.flush(); })); }); 或者你可以把你的respond()在你的expectGET()。我更喜欢把我的whenGET()语句在一个beforeEach()这种方式我不必定义每个测试中的响应。 //expect a get request to "internalapi/quotes" $httpBackend.expectGET("internalapi/quotes").respond({ hello: 'World' }); ms.retrieveQuotes(); $httpBackend.flush(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |