Я новичок в мире тестирования, извините, если этот вопрос слишком очевиден!
У меня есть полностью функциональный и сложный проект angular 9. Я объясню свою проблему простым языком:
У меня несколько служб:
- Service_MAIN (использует HttpClient, Router и т.д. c.)
- Service_A (использует Service_MAIN)
- Service_B (использует Service_MAIN и et c.)
Теперь я успешно протестировал Service_MAIN, создав шпионов, et c.
let service: Service_MAIN;
beforeEach(() => {
httpClientSpy = jasmine.createSpyObj('HttpClient', ['get', 'put', 'post', 'delete', 'patch']);
routerSpy = jasmine.createSpyObj('Router', ['navigate']);
TestBed.configureTestingModule({
imports: [MatSnackBarModule],
providers: [
Service_MAIN,
{provide: HttpClient, useValue: httpClientSpy},
{provide: Router, useValue: routerSpy},
SnackBarService
]
});
service= TestBed.inject(Service_MAIN);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
...
...
Теперь, когда я хочу протестировать Service_A и Service_B, мне снова нужно создать шпиона для моего Service_MAIN и передать httpClientspy, routerSpy и т.д. c.?
Кроме того, если я один раз создать шпиона для Service_MAIN, чтобы протестировать Service_A, нужно ли мне создать такого же шпиона для Service_B?
Это создаст много повторений в моих тестовых файлах.
ПРИМЕЧАНИЕ: Service_A не использует напрямую HTTPCLIENT, он использует Service_MAIN для косвенных вызовов HTTP.