2016-10-17 2 views
5

Ich habe ein eckiges 2-Tool, um Server zu überwachen und nur mit den Tests gestartet. Wenn ich versuche, den httpService zu verspotten, wusste ich nicht, wie ich die Rest-API verspotten sollte, also schaute ich online, reparierte einige Fehler und bin jetzt auf diesem festgefahren.
hier der Fehler:Fehler: Kein Provider für HttpService! In Karma-Test

Chrome 53.0.2785 (Windows 10 0.0.0) HttpServiceFront should use an HTTP call Servers FAILED 
     Error: No provider for HttpServiceFront! 
      at NoProviderError.Error (native) 
      ... 
      at drainMicroTaskQueue (webpack:///~/zone.js/dist/zone.js:368:0 <- config/karma-test-shim.js:6854:36) 
Chrome 53.0.2785 (Windows 10 0.0.0): Executed 2 of 3 (1 FAILED) (skipped 1) (0.268 secs/0.057 secs) 

Hier ist meine Testfall:

import { 
    ResponseOptions, 
    Response, 
    Http, 
    BaseRequestOptions, 
    RequestMethod 
} from '@angular/http'; 

import { 
    TestBed, fakeAsync, inject 
} from '@angular/core/testing'; 

import { HttpServiceFront } from '../app/services/httpServiceFront'; 

import { MockBackend, MockConnection } from '@angular/http/testing'; 

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

describe('HttpServiceFront',() => { 
    beforeEach(() => { 
     {Http, mockHttpProvider} 
     TestBed.configureTestingModule(
      [MockBackend, 
      BaseRequestOptions] 
     ) 
    }); 

    it('should use an HTTP call Servers', 
     inject(
      [HttpServiceFront, MockBackend], 
      fakeAsync((service: HttpServiceFront, backend: MockBackend) => { 
       backend.connections.subscribe((connection: MockConnection) => { 

        expect(connection.request.method).toBe(RequestMethod.Get); 
        expect(connection.request.url).toBe(
         'http://localhost:8080/server'); 
       }); 

       service.getServers(); 
      }))); 
}); 

Danke für die Hilfe :)

Antwort

7

Ihre Syntax Nähte falsch, docs überprüfen. So etwas sollte funktionieren:

beforeEach(() => { 
    TestBed.configureTestingModule({ 
     providers: [ 
      { provide: Http, useValue: mockHttpProvider }, 
      MockBackend, 
      BaseRequestOptions] 
    }) 
}); 
+1

Zunächst einmal danke für die schnelle Antwort, aber der Fehler ist immer noch derselbe. Irgendeine andere Idee? – Bono

+0

@Bono Sie müssen noch die 'HttpServiceFront' zur Liste der Provider hinzufügen –

Verwandte Themen