期待一个间谍,但得到了 BehaviorSubject

Posted

技术标签:

【中文标题】期待一个间谍,但得到了 BehaviorSubject【英文标题】:Expected a spy, but got 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);

【问题讨论】:

【参考方案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 部分以及

以上是关于期待一个间谍,但得到了 BehaviorSubject的主要内容,如果未能解决你的问题,请参考以下文章

P1910 L国的战斗之间谍

角色与间谍的间谍

洛谷——P1910 L国的战斗之间谍

洛谷 P1910 L国的战斗之间谍(水题日常)

从另一个页面访问时引导滚动间谍

Mockito 无法创建 @Autowired Spring-Data Repository 的间谍