Reputation: 1565
Can anyone help me with this error:
Can't resolve all the parameters of MockConnection (?)
I tried to find the solution on StackOverflow. This error is being occurred even after I have imported HttpModule
. It would be great anyone can guide where I'm doing mistake -
shared/mock-backend/knowledge.mock.ts
export const MockKnowledgeApi = {
query: 'Berlin',
max_hits: 5,
hosts: ['http://dbpedia.org/resource/Berlin'],
language: 'en_US',
}
knowledgeapi-service.spec.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);
});
});
});
Upvotes: 2
Views: 698
Reputation: 8186
You need to remove the MockConnection
from the TestBed.configureTestingModule({providers: array
as it takes a Request
object in its constructor - and you don't have that type of object provided.
The MockBackend
will take care of initializing the MockConnection
object for you.
Upvotes: 1