javascript - Angular 2模拟Http get()返回本地json文件

标签 javascript angularjs json rest angular

在 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/

相关文章:

javascript - jQuery Ajax POST 并返回数据

angularjs - Angular ng-如果不正确

javascript - AngularJS $http 结果与 promise

java - Spring @JsonIgnore 序列化未按预期工作

Java Jackson 序列化器,包括 FQCN

javascript - 滚动时堆叠 div

javascript - 查找 SVG 路径中的中点

javascript - key 斗篷 : Redirection loop using javascript adapter behind nginx

javascript - 指示在 Angular 中选中的复选框

Python Tornado 请求 JSON