#http #angular #error-handling #mocking #karma-jasmine
#http #угловой #обработка ошибок #издевательство #karma-jasmine
Вопрос:
У меня есть инструмент angular 2 для мониторинга серверов, и я только начал с тестов. Когда я пытаюсь издеваться над HTTPService, я не знал, как издеваться над Rest-API, поэтому я посмотрел онлайн, исправил некоторые ошибки и теперь застрял на этом.
Здесь ошибка:
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)
Вот мой тестовый пример:
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();
})));
});
Спасибо за помощь 🙂
Ответ №1:
Ваш синтаксис кажется неправильным, проверьте документы. Что-то вроде этого должно работать:
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
{ provide: Http, useValue: mockHttpProvider },
MockBackend,
BaseRequestOptions]
})
});
Комментарии:
1. Прежде всего, спасибо за быстрый ответ, но ошибка все та же. Есть еще какие-нибудь идеи?
2. @Bono Вам все равно нужно добавить
HttpServiceFront
в список поставщиков