【问题标题】:Expected a spy, but got BehaviorSubject期待一个间谍,但得到了 BehaviorSubject
【发布时间】:2020-11-09 12:04:25
【问题描述】:

我正在尝试为此功能 (2) 实施测试 (1)。 我的目的是检查是否在滚动时调用 componentsOffsetService。 我收到消息错误:预期是间谍,但得到了 BehaviorSubject。有什么想法吗?

(1)

    it('should call componentsOffsetService on scroll', () => {
    spyOn(componentsOffsetService.onScroll, 'next');
    const container = fixture.debugElement.query( By.css('.main-container'));
    container.nativeElement.scroll();
    fixture.detectChanges();
    fixture.whenStable().then(() => {
      expect(componentsOffsetService.onScroll).toHaveBeenCalledTimes(1);
    });

(2)

public onScroll(event): void {
    this.componentsOffsetService.onScroll.next(event.target.scrollTop);
  }

(3)组件OffsetService中的onScroll

public onScroll = new BehaviorSubject<number>(0);

【问题讨论】:

    标签: angular jasmine karma-jasmine karma-runner karma-coverage


    【解决方案1】:

    从代码中,我可以看到您将next 上的间谍设置​​为错误

     spyOn(componentsOffsetService.onScroll, 'next');
    

    但您正在查看onScroll

      expect(componentsOffsetService.onScroll).toHaveBeenCalledTimes(1); 
    

    改变期望如下:

      expect(componentsOffsetService.onScroll.next).toHaveBeenCalledTimes(1); 
    

    【讨论】:

    • 如果我让 expect(componentsOffsetService.onScroll.next).toHaveBeenCalledTimes(1) 我得到了 err Expected a spy, but got Function.
    • @Анна: 能否分享一下你在spec 文件中创建componentsOffsetService 的组件代码和测试代码。没有这些代码很难提供更多答案
    • 我添加规范文件
    • @Анна:我的意思是TestBed 部分以及
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多