期待一个间谍,但得到了 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的主要内容,如果未能解决你的问题,请参考以下文章