Ошибка: StaticInjectorError (DynamicTestModule) [CityService -> Http]: нет поставщика для Http - PullRequest
0 голосов
/ 22 мая 2018

У меня есть этот сервис, который возвращает весь Город с ws.

@Injectable()
export class CityService {
  constructor(private http: Http, private router: Router,
  private auth: AuthService) { }

  public getAllCity(): Observable<City[]> {
    let headers = new Headers();
    headers.append('x-access-token', this.auth.getCurrentUser().token);
    return this.http.get(Api.getUrl(Api.URLS.getAllCity), {
      headers: headers
    })
      .map((response: Response) => {
        let res = response.json();
        if (res.StatusCode === 1) {
          this.auth.logout();
        } else {
          return res.StatusDescription.map(city => {
            return new City(city);
          });
        }
      });
  }
}

Теперь я попробовал этот код, чтобы проверить мой сервис.В этом посте я хочу узнать, как протестировать этот сервис CityService

describe('Service: City', () => {
    let component: CityService;
    let fixture: ComponentFixture<CityService>;

    beforeEach(() => {
        TestBed.configureTestingModule({
            declarations: [],
            providers: [CityService] 
        })
        fixture = TestBed.get(CityService);
        component = fixture.componentInstance;
    });
   it('#getAllCity should return real value', () => {
     expect(component.getAllCity()).toBe('real value');
  });
});

Я попробовал этот код, но покажу мне ошибку:

Ошибка: StaticInjectorError (DynamicTestModule)[CityService -> Http]:
StaticInjectorError (Платформа: ядро) [CityService -> Http]: NullInjectorError: Нет провайдера для Http!

Как проверить / показать мой город в ng test?

Это моя первая попытка, можете ли вы предложить мне какой-нибудь пример или учебник, подобный моему коду?

1 Ответ

0 голосов
/ 22 мая 2018

CityService зависит от 3 услуг, а именно Http, Router и AuthService.Вам нужно ввести их в тест.

describe('Service: City', () => {
    let service: CityService;

    beforeEach(() => {
        TestBed.configureTestingModule({
            declarations: [],
            providers: [CityService, AuthService],  // all all services upon which AuthService depends
            imports: [RouterTestingModule, HttpClientTestingModule], 
        });
    });

    beforeEach(() => {
        service = TestBed.get(CityService);
    });

    it('#getAllCity should return real value', () => {
        expect(service.getAllCity()).toBe('real value');
    });
});

https://angular.io/guide/testing - это необходимо прочитать для модульного тестирования Angular.https://angular.io/guide/testing#service-tests - часть, связанная с услугами по тестированию.https://angular.io/guide/http#setup-1 - относится к тестированию звонков с использованием сервиса Http.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...