HttpClient测试问题:没有提供嵌套服务的HttpClient提供程序

时间:2018-01-09 13:36:56

标签: angular angular-httpclient

我在Angular 4中从Http升级到HttpClient时遇到问题。我有一个服务,它有一个嵌套的HttpClient引用。我的结构看起来像这样: 我的TokenHandlerService注入MyHttpService注入Angulars HttpClient

运行我在网上找到的代码片段如下:

let service: TokenHandlerService;
let httpMock: HttpTestingController;

beforeEach(() => {
    TestBed.configureTestingModule({
        imports: [
            HttpClientModule,
            HttpClientTestingModule
        ],
        providers: [
            TokenHandlerService,
            MyHttpService
        ]
    });
    httpMock = TestBed.get(HttpTestingController);
    service = TestBed.get(TokenHandlerService);
});

我想测试TokenHandlerService,但运行这个我总是在一个 Error: No provider for HttpClient!

如何将模拟的HttpClient传递给更深层次的嵌套服务?

2 个答案:

答案 0 :(得分:1)

感谢support team at github我能够通过添加:

来解决这个问题
import 'core-js/es7/reflect';

到我的test.ts文件。

答案 1 :(得分:0)

您可以尝试从导入语句中删除 HttpClientModule 吗?

因为我们已经为测试模块添加了 HttpClientTestingModule