Ваша задача будет овладеть 'wsHelper', чтобы шпионить за ним. Одна мысль: можете ли вы сделать рефакторинг, чтобы вместо него сделать переменную области видимости wsHelper? Тогда вы могли бы подсмотреть, когда вы получите сервис в наборе тестов, например, что-то вроде:
service = TestBed.get(StatefulPatternService);
let spy = spyOn(service.wsHelper, 'subscribeFn');
Обновление
Из комментариев к моему ответу похоже, что вы действительно пытаетесь сделать, это убедиться, что конструктор был вызван с правильным URL-адресом. Поскольку вы сохраняете это в переменной класса, вам не нужно шпионить за конструктором, а просто проверять значение сохраненной переменной. Как я упоминал в комментариях, для этого вам понадобятся две вещи: сделать wsHelper переменной уровня класса и добавить метод в класс WebSocketHelper, который возвращает значение закрытой переменной 'url', чтобы вы могли проверить это. Я настроил стек-блиц, чтобы продемонстрировать, о чем я говорю здесь: STACKBLITZ Вот фрагмент из этого стека-блиц:
describe('MyService', () => {
let myService: StatefulPatternService;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [/* any imports needed */],
providers: [ StatefulPatternService ]
});
myService = TestBed.get(StatefulPatternService);
});
it('should be createable', () => {
expect(myService).toBeTruthy();
});
it('should construct wsHelper properly', () => {
myService.init();
expect(myService.wsHelper.get_url()).toEqual('/subscribe/topic');
})
});