spyOnProperty не делегирует шпионскому методу - PullRequest
0 голосов
/ 06 июня 2018

У меня есть метод ngOnInit для моего компонента, который выглядит примерно так:

public ngOnInit(): void {
    this.subscription = this.myService.myGetter.subscribe(...);
}

Я пытаюсь протестировать этот метод, высмеивая мой сервис и следя за моим геттером.Например, мой смоделированный сервис выглядит следующим образом:

export class MockedService {
    public get myGetter(): Subject<MyData[]> {
        return;
    }
}

Внутри моей конфигурации TestBed в моей тестовой спецификации я включаю смоделированный сервис в массив моих провайдеров и внедряю сервис:

{ provide: MyService, useClass: MockedService }

let myService = fixture.debugElement.injector.get(MyService);

Затем в моем реальном тесте я шпионю за этим свойством и возвращаю ожидаемое значение:

const serviceSpy: jasmine.Spy = spyOnProperty(myService, 'myGetter', 'get').and.returnValue(Observable.of(sampleData));

Когда приходит время проверить метод, я продолжаю получать:

Невозможно подписать готовое свойство на неопределенное

Я не уверен, почему это происходит.Я слежу за свойством и возвращаю Observable, чтобы за ним следили.

Если я попытаюсь изменить return в моем MockedService на что-то другое (вернуть фактическое значение, скажем, строку),кажется, что это работает, потому что сообщение об ошибке позволяет мне знать, что subscribe не существует на myGetter.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...