Издеваться только над одним из способов ангулярной службы - PullRequest
0 голосов
/ 13 мая 2019

У меня есть угловой сервис, где один метод прослушивает изменения состояния и возвращает наблюдаемое, но другие методы этого же сервиса выполняют логику преобразования:

ngOnInit() {
    this.isLoading = true;
    this.myService.stateListener().subscribe((res: any) => {
        this.data = this.myService.transformModel(res);
        this.isLoading = false;
        this.cd.detectChanges();
    }, (err) => {
        this.errMessage = 'Data could not be loaded';
        this.isLoading = false;
    });
}

В тестах я высмеиваю слушателя состояния, чтобы он возвращал определенные тестируемые данные, например, так:

const mockService = jasmine.createSpyObj('myService', ['stateListener']);
mockService.stateListener.and.returnValue(of({
    number: 107,
    mock: someMock
}));

Проблема в том, что, поскольку я смоделировал службу, метод «transformerModel» больше не существует (в смоделированной службе), поэтому данные, связанные с компонентом, «неопределены».

Есть ли способ смоделировать только возвращаемую наблюдаемую (stateListener) без насмешки метода преобразования того же сервиса?

1 Ответ

1 голос
/ 13 мая 2019
let testData={}// stubbed response of Observable or Model
let dataStub=fixture.debugElement.injector.get(MyService);
spyOn(dataStub, 'stateListener').and.returnValue(
      Observable.of(testData)
    );

Вы можете использовать stub и returnValue и Observable.of, чтобы заглушить его и вернуть наблюдаемое.

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