代码之家  ›  专栏  ›  技术社区  ›  User 5842

spyOnProperty未委托给spied on方法

  •  0
  • User 5842  · 技术社区  · 6 年前

    ngOnInit 我的组件上的方法,类似于以下内容:

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

    我试图通过嘲笑我的服务和监视我的getter来测试这个方法。例如,我的模拟服务看起来像:

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

    { provide: MyService, useClass: MockedService }
    
    let myService = fixture.debugElement.injector.get(MyService);
    

    然后,在实际测试中,我监视此属性并返回预期值:

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

    当需要测试该方法时,我继续收到:

    无法准备未定义的属性订阅

    我不知道为什么会这样。我在监视这处房产,并返回一个可观察到的东西让它监视。

    如果我试图改变 return subscribe 上不存在 myGetter .

    有什么想法吗?

    0 回复  |  直到 6 年前