Карма: свойство не имеет типа доступа get - PullRequest
2 голосов
/ 28 января 2020

У меня ошибка в моих тестах кармы в моем приложении Angular. Ошибка при запуске моих тестов:

Failed: Property activePropertyChanged does not have access type get

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

get activePropertyChanged(): Observable<SpecificationPropertyObject> {
    return this.activePropChangedSubject.asObservable();
}

И в моем файле spec я высмеиваю его так:

spyOnProperty(moduleSpecServiceMock, 'activePropertyChanged', 'get').and.returnValue(of());

// then, in configureTestingModule() I define/mock the service like this:
providers: [{ provide: ModuleSpecService, useValue: moduleSpecServiceMock }]

Так что в моем сервисе явно есть геттер, который я хочу издеваться Если я уберу строку с spyOnProperty(), она выдаст следующую ошибку:

TypeError: this.moduleSpecService.activePropertyChanged.subscribe is not a function

, поэтому я определенно нуждаюсь в макете.

Любая идея, что может go неправильно?

1 Ответ

3 голосов
/ 28 января 2020

Поскольку это, похоже, ошибка в жасмине, мне удалось исправить это с помощью обходного пути:

Вместо этого:

spyOnProperty(moduleSpecServiceMock, 'activePropertyChanged', 'get').and.returnValue(of()); 

Я определил свойство следующим образом:

(moduleSpecServiceMock as any).activePropertyChanged = of();

Я должен был разыграть его как any, потому что если нет, он (правильно) сказал мне, что activePropertyChange является read-only свойством (так как у него есть только геттер).

Не лучшее решение, но, по крайней мере, оно работает :)

...