Karma:属性没有访问类型get

问题描述 投票:0回答:1

我在Angular应用程序的Karma测试中出错。错误是当我运行测试时:

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

所以我绝对需要模拟游戏。

知道有什么问题吗?

angular jasmine karma-runner
1个回答
0
投票

由于这似乎是茉莉花中的错误,所以我设法通过一种解决方法解决了这个问题:

代替此:

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

我这样定义属性:

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

我不得不将其强制转换为any,因为如果没有,它(正确地)告诉我activePropertyChangeread-only属性(因为它只有一个吸气剂)。

不是最好的解决方案,但至少它可以工作:)

© www.soinside.com 2019 - 2024. All rights reserved.