我在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
所以我绝对需要模拟游戏。
知道有什么问题吗?
由于这似乎是茉莉花中的错误,所以我设法通过一种解决方法解决了这个问题:
代替此:
spyOnProperty(moduleSpecServiceMock, 'activePropertyChanged', 'get').and.returnValue(of());
我这样定义属性:
(moduleSpecServiceMock as any).activePropertyChanged = of();
我不得不将其强制转换为any
,因为如果没有,它(正确地)告诉我activePropertyChange
是read-only
属性(因为它只有一个吸气剂)。
不是最好的解决方案,但至少它可以工作:)