我在我的角度应用程序中定义了以下服务:
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();
});
});
每当我运行测试时,第一个测试通过,但第二个测试产生错误:
Error: Unexpected request: 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", function () {
expect(ms.retrieveQuotes).toBeDefined();
});
it("retrieveQuotes should return array of quotes", 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();
火狐: 跨来源请求被阻止:相同来源策略不允许读取位于[url]的远程资源(原因:缺少CORS头'Access-Control-Allog-Origin')。 铬:
问题内容: ABstractMethodError的可能原因是什么? 线程“ pool-1-thread-1”中的异常java.lang.AbstractMethodError: 问题答案: 简单的答案是这样的:一些代码试图调用一个声明的方法。抽象方法没有主体,无法执行。由于您提供的信息很少,因此我无法真正详细说明如何发生这种情况,因为编译器通常会遇到此问题- 如此处所述,这意味着该类必须在运行时
很抱歉,我对Java知之甚少。我得到了这个代码来接管。基本上,我在 当我运行代码时。 下面是解析XML的块 这是Improts,不确定是否需要这样做 这是XML文件
我正在使用PARSE API发出GET请求。我收到一个“414请求URI太大”错误,但我不明白为什么。这是我请求的代码:
请问大佬们,为什么我的服务会收到一些4位且随机码的请求
这是获取请求: 这是后端代码: 错误: CORS策略阻止了从源“http://localhost:3000”在“http://localhost:3001/”获取的访问:请求的资源上不存在“访问-控制-允许-起源”标头。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用CORS的情况下获取资源。