Angular 2 mock Http get()返回本地json文件

Tuo*_*nen 6 javascript rest json angularjs angular

模拟Http get()Angular 2中返回的响应的最简单方法是什么?

我的data.json工作目录中有本地文件,我想get()将包含该数据的响应作为有效负载返回,模拟其余的api.

用于配置Backend对象的文档对于Http这样一个简单的任务来说似乎有点模糊和过于复杂.

Thi*_*ier 2

您需要用该XhrBackend提供者覆盖该提供者MockBackend。然后,您需要创建另一个注入器才能执行真正的 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
          })));
      });
    });
}));
Run Code Online (Sandbox Code Playgroud)