Angular 8 тест с httpClient не отправляет запросы - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь протестировать базовую c службу, но похоже, что httpClient не отправляет запрос в мой локальный API, даже если он говорит, что проходит тест

describe('MyService', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      imports:[
        //HttpClientTestingModule,
        HttpClientModule,
        TranslateModule.forRoot(),
        RouterTestingModule.withRoutes([])
      ],
      providers:
      [
        MyService
      ]
    });
  });

  it('should return 1', inject([HttpClient,MyService],
    (httpClient: HttpClient, myService: MyService) => {
     const headers = {
      'Content-Type': 'application/json',
      'Authorization': "Bearer token"
     }
     httpClient.get("http://localhost:60200/path?parameter=1", { headers: headers }).subscribe((myModel:MyModel)=>{
       expect(myModel.id).toBe(1);
     }); //pass to the test but didn't sent to the api
     myService.getById(parameter).subscribe((myModel: MyModel)=>{
        expect(myModel.id).toBe(1);
     }); //what I really want to test
  }));
});

1 Ответ

0 голосов
/ 13 января 2020

Решено, мне просто нужно было использовать TestBed.get, вместо того, чтобы использовать инъекцию, чтобы получить сервис, и использовать 'done' из jasmine для выполнения асинхронного запроса.

  ...
  myService = TestBed.get(MyService);
  ...
  it('should return 1', (done) => {
     myService.getById(parameter).subscribe((myModel: MyModel)=>{
        expect(myModel.id).toBe(1);
        done();
     });
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...