Angular 2: не удается разрешить все параметры MockConnection (?)- ошибка, возникающая даже после импорта HttpModule


Может ли кто-нибудь помочь мне с этой ошибкой: Can't resolve all the parameters of MockConnection (?)

Я попытался найти решение на StackOverflow. Эта ошибка возникает даже после того, как я импортировал HttpModule. Было бы здорово, если бы кто-нибудь мог указать, где я делаю ошибку -

Общие / макет-бэкенд / знания.издеваться.ts

export const MockKnowledgeApi = {
     query: 'Berlin',
     max_hits: 5,
     hosts: ['http://dbpedia.org/resource/Berlin'],
     language: 'en_US',
}

Knowledge-сервис.спекуляция.ts

import { TestBed, inject, async, fakeAsync, tick } from '@angular/core/testing';
import { MockBackend, MockConnection } from '@angular/http/testing';
import { Http, BaseRequestOptions, RequestMethod, Response, ResponseOptions, HttpModule } from '@angular/http';
import { KnowledgeapiService } from './knowledgeapi.service';
import { MockKnowledgeApi } from './shared/mock-backend/knowledge.mock';

const mockHttp_provider = {
   provide: Http,
   deps: [MockBackend, BaseRequestOptions],
   useFactory: (backend: MockBackend, options: BaseRequestOptions) => {
     return new Http(backend, options);
   }
 }

 describe('Service: KnowledgeapiService', () => {
   let service: KnowledgeapiService = null;
   let backend: MockBackend = null;

    beforeEach(() => {
      TestBed.configureTestingModule({
       providers: [
        KnowledgeapiService,
        MockBackend,
        BaseRequestOptions,
        mockHttp_provider,
        MockConnection
       ],
       imports: [
        HttpModule
       ]
     });
   });

beforeEach(inject([KnowledgeapiService, MockBackend], (knowledgeService: KnowledgeapiService, mockBackend: MockBackend) => {
     service = knowledgeService;
     backend = mockBackend;
    }));

const searchquery = 'Berlin';
const _queryResult = MockKnowledgeApi;

   it('should create an instance KnowledgeapiService',
     inject([KnowledgeapiService, MockBackend], () => {
       expect(service).toBeTruthy();
     })
   );

   it('should call knowledge service API and return the result', () => {
     backend.connections.subscribe((connection: MockConnection) => {
       const options = new ResponseOptions({
         body: JSON.stringify(MockKnowledgeApi)
       });

       connection.mockRespond(new Response(options));
       expect(connection.request.method).toEqual(RequestMethod.Get);
       expect(connection.request.url).toEqual(
         `http://lookup.dbpedia.org/api/search/KeywordSearch` +
                     `?QueryString=${searchquery}`
       );
     });

     service.getsearchresults(searchquery).subscribe((res) => {
       expect(res).toEqual(MockKnowledgeApi);
     });

   });

  });
1 2

1 ответ:

Вам нужно удалить MockConnection из TestBed.configureTestingModule({providers: array, поскольку он принимает объект Request в своем конструкторе - и у вас нет такого типа объекта.

MockBackend позаботится об инициализации объекта MockConnection для вас.