在 Angular 2 中模拟 Http
get()
返回的响应的最简单方法是什么?
我的工作目录中有本地 data.json
文件,我希望 get()
返回包含该数据作为有效负载的响应,模拟其余 api。
为 Http
配置 Backend
对象的文档对于这样一个简单的任务来说似乎有些晦涩和复杂。
最佳答案
您需要使用 MockBackend
提供程序覆盖 XhrBackend
提供程序。然后您需要创建另一个注入(inject)器才能执行真正的 HTTP 请求。
这是一个示例:
beforeEachProviders(() => {
return [
HTTP_PROVIDERS,
provide(XHRBackend, { useClass: MockBackend }),
SomeHttpService
];
});
it('Should something', inject([XHRBackend, SomeHttpService], (mockBackend, httpService) => {
mockBackend.connections.subscribe(
(connection: MockConnection) => {
var injector = ReflectiveInjector.resolveAndCreate([
HTTP_PROVIDERS
]);
var http = injector.get(Http);
http.get('data.json').map(res => res.json()).subscribe(data) => {
connection.mockRespond(new Response(
new ResponseOptions({
body: data
})));
});
});
}));
关于javascript - Angular 2模拟Http get()返回本地json文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526629/