Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 用于实体模型的模拟Http后端_Angular_Http - Fatal编程技术网

Angular 用于实体模型的模拟Http后端

Angular 用于实体模型的模拟Http后端,angular,http,Angular,Http,有没有一种方法可以模拟Angular 2的Http对象,我们的梦想是将其用于模拟,并且除了发送到服务器的连接之外,具有与核心代码相同的模拟。有一个MockBackend,请确保它在默认后端之后在DI中注册,因此使用它 从'angular2/Http'导入{DefaultOptions,Http}; 从'angular2/http/testing'导入{MockBackend}; 它('should get some data',inject([AsyncTestCompleter],(asyn

有没有一种方法可以模拟Angular 2的Http对象,我们的梦想是将其用于模拟,并且除了发送到服务器的连接之外,具有与核心代码相同的模拟。

有一个
MockBackend
,请确保它在默认
后端
之后在DI中注册,因此使用它

从'angular2/Http'导入{DefaultOptions,Http};
从'angular2/http/testing'导入{MockBackend};
它('should get some data',inject([AsyncTestCompleter],(async)=>{
无功连接;
var注入器=注入器.resolveAndCreate([
模拟后端,
提供(Http,{useFactory:(后端,默认选项)=>{
返回新的Http(后端,默认选项)
},deps:[MockBackend,DefaultOptions]}]);
var http=injector.get(http);
var backend=injector.get(MockBackend);
//将任何新创建的连接分配给局部变量
backend.connections.subscribe(c=>connection=c);
http.request('data.json').subscribe((res)=>{
expect(res.text()).toBe('awesome');
async.done();
});
mockRespond(新的响应('awesome'));
}));
如果要在整个应用程序中使用
MockBackend

bootstrap(AppComponent[
HTTP_提供商,
提供(XHRBackend,{useClass:MockBackend}),
提供(JSONPBackend,{useClass:MockBackend})];
确保
MockBackend
提供程序位于
HTTP\u提供程序之后

如果希望
MockBackend
仅由特定组件使用,请添加

provide(XHRBackend,{useClass:MockBackend}),
提供(JSONPBackend,{useClass:MockBackend})

改为组件的提供者列表。

谢谢,但是我如何注入它,以便每当组件请求一个http对象时,它都会得到我的mock?如果您想对整个应用程序
bootstrap(AppComponent,[http_providers,provide(XHRBackend,{useClass:MockBackend}),provide(JSONPBackend,{useClass:MockBackend})];
。确保
MockBackend
提供程序位于
HTTP\u提供程序之后。如果希望
MockBackend
仅用于特定组件,请添加
、提供(XHRBackend,{useClass:MockBackend})、提供(JSONPBackend,{useClass:MockBackend})
改为组件的提供程序。谢谢你,你的评论帮助找到了解决方案,我所做的一个修改不是传递{useClass:MockBackend},而是传递给提供程序{useValue:backend}其中包含实际的模拟后端;)。啊,抱歉,注释与我回答中的代码不一致。很高兴你能理解:)