Я вижу две основные проблемы с вашим кодом как есть:
- Хотя вы не вызываете внутреннюю службу, так как импортируете
HttpClientTestingModule
, вы на самом деле не настраиваете еев любом месте.Для этого имеется обширная документация: Тестирование HTTP-запросов .Однако, чтобы протестировать такой простой сервис, я бы не стал вдаваться во все эти неприятности, метод get()
довольно просто подделать.в вашей спецификации (функция 'it').Это решается путем переноса обратного вызова на async
.
У меня это работает в Stackblitz для вас.
Из этого Stackblitz, вот.spec's describe()
:
describe('Lojas Services', () => {
const mockReturnValue: Lojas[] = [1, 2, 3]; // change this!
const httpSpy = jasmine.createSpyObj('HttpClient', ['get']);
httpSpy.get.and.returnValue(of(mockReturnValue));
beforeEach(() => {
TestBed.configureTestingModule({
// imports: [ HttpClientTestingModule ], <-- this is commented out
providers: [ LojasServices,
{provide: HttpClient, useValue: httpSpy} // <-- this uses the spy instead of HttpClient
]
});
});
it('should return the correct value', async(inject([LojasServices], (service: LojasServices)=>{
service.todasLojas()
.then(a => {
console.log('loggin');
expect(a.length).toBe(3);
})
.catch(s => {
expect(true).toBe(false);
});
})));
});
Да, я изменил ваши отступы - это чисто личное предпочтение.:)