2016-10-17 3 views
5

У меня есть угловой инструмент 2 для мониторинга серверов и только что начатый с тестов. Когда я пытаюсь издеваться над httpService, я не знал, как издеваться над Rest-API, поэтому я посмотрел онлайн, исправил некоторые ошибки и теперь застрял на этом.
Здесь Ошибка:Ошибка: нет провайдера HttpService! В 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) 

Вот мой TestCase:

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(); 
      }))); 
}); 

Спасибо за помощь :)

ответ

7

синтаксис швы, чтобы быть неправильно, проверьте docs. Что-то вроде этого должно работать:

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

Прежде всего спасибо за быстрый ответ, но ошибка все тот же. Любая другая идея? – Bono

+0

@Bono Вам все равно нужно добавить 'HttpServiceFront' в список поставщиков –

Смежные вопросы