Угловой модульный тест HttpClientTestingModule нет запроса?

1

Я создал службу, которую я пытаюсь написать.

Он использует библиотеку https://github.com/auth0/angular2-jwt. Я предоставляю службу AuthHttp, но скажу, что тест вместо Http

Сама услуга работает нормально, но я изо всех сил пытаюсь написать тест.

Я пытаюсь использовать HttpClientTestingModule из Angular, чтобы высмеивать ответ HTTP и проверять значения, но кажется, что моя функция getLookups в службе никогда не выполняется?

getLookup(id: number): Observable<Lookup[]> {
    const _lookups: Subject<Lookup[]> = new Subject();
    const lookups: Observable<Lookup[]> = _lookups.asObservable();

       this.authHttp.get(this.config.api.baseAPI + '/api/property/' + id + '/lookup')

        .subscribe(data => {

                const lookupsRaw = data.json();
                const lookUpsParsed: Lookup[] = [];
                lookupsRaw.forEach((lup) => {
                    lookUpsParsed.push(new Lookup(lup.id, lup.label));
                });

                 console.log(lookUpsParsed);
                _lookups.next(lookUpsParsed);
            },
            err => console.log('Error!!!!'+ err),
            () => console.log('Request Complete!!')
        );
    return lookups;
}

Это тест, который я строю для запуска

describe('SurveyService', () => {



beforeEach(() => {


    TestBed.configureTestingModule({
        imports: [HttpModule, HttpClientTestingModule],
        providers: [
            AuthHttp,
            SurveyService,
            ConfigurationService,
            {provide: AuthHttp, useExisting: Http}


        ]
    });


});

afterEach(inject([HttpTestingController], (httpMock: HttpTestingController) => {
    httpMock.verify();
}));

 it('should be created',
    inject([HttpTestingController, SurveyService], (httpMock: HttpTestingController, service: SurveyService) => {

            expect(service).toBeTruthy();

            service.getLookup(7).subscribe(lookup => {


            });
        const req = httpMock.expectOne('/api/property/7/lookup');
        req.flush({name: 'Test Data'});
        }
    ));

});

Может ли кто-нибудь сказать мне, где я ошибаюсь в этом, пожалуйста?

Спасибо, Уве

Теги:
angular

1 ответ

0

попробуйте сделать что-то вроде этого:

it('',async(done)=>{ 
 ...
 service.getLookup(7).subscribe(lookup => {
  expect(...).tobe(...);
  done();
   });
});

я предполагаю, что, поскольку ваш код является асинхронным, вам нужно дождаться его ответа. Это один из способов сделать это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню