Спасибо за ваш ответ. Код работает принципиально. Мне пришлось сделать несколько изменений, чтобы тест работал. Вот мои изменения:
describe('getEntries method', () => {
it('should do get request and return entries', (done) => {
jest.spyOn(service['http'], 'get').mockReturnValue(of({data: require('../mocks/entries.json'), status: 200, statusText: 'OK', headers: {}, config: {}}));
let data = {};
service.getEntries().subscribe({
next: (val) => {data = val},
error: (err) => { throw err; },
complete: () => {
expect(data).toEqual(require('../mocks/entries.json'))
done();
}
});
});
it('should return error if request failed', (done) => {
jest.spyOn(service['http'], 'get').mockReturnValue(throwError('request failed'));
let data = {};
service.getEntries().subscribe({
next: (val) => {data = val},
error: (err) => {
expect(err).toBe('request failed');
done();
},
complete: () => {
expect(data).toBeUndefined();
done();
}
});
});
});
Вы должны смоделировать AxiosReponse на httpSpy mockReturnValue, поэтому я добавил «status», «statusText», «header», «config». В противном случае вы получите ошибку типа.
И вторая часть. Я шпионил за httpService так:
let httpService: HttpService;
httpService = module.get(HttpService)
Это не работает. Я должен следить за внедрением HttpService моего Сервиса.
constructor(private readonly http: HttpService) {}
Вот почему мой шпион выглядит так: service ['http'].
Теперь у меня есть полный охват этого http request:)
Спасибо большое;) Хорошего дня!