【问题标题】:Angular: How I can test @HostListener in jasmine?Angular:我如何在茉莉花中测试@HostListener?
【发布时间】:2017-05-30 21:34:12
【问题描述】:

我在 Angular 的组件中有下一个代码:

@HostListener('window:scroll', []) onWindowScroll() {
  this.showScrollToTop = false;
}

如何在 jasmine 中进行测试?如何发起窗口滚动事件?

【问题讨论】:

    标签: angular unit-testing jasmine


    【解决方案1】:

    测试窗口:滚动:

    it('should do something on window scroll', () => {
      window.dispatchEvent(new Event('scroll'));
      expect(...)....
    });
    

    【讨论】:

    • 但是如何指定滚动量?
    【解决方案2】:

    你可以尝试通过在窗口上调用scrollTo函数来做简单的JS滚动。

    如果你想滚动顶部,它将是:

    window.scrollTo(0, 0);
    

    更新

    var scrollEvent = document.createEvent('CustomEvent');
    scrollEvent.initCustomEvent( 'scroll', false, false, null );
    
    window.dispatchEvent(scrollEvent)
    

    【讨论】:

    • 感谢您的回复。但不幸的是,这不会触发'onWindowScroll'
    • 您可以尝试使用scroll 名称创建自定义事件吗?更新我的答案。
    【解决方案3】:
     it('Focus over elements', () => {
        fixture.detectChanges();
        const event = new Event('click', { bubbles: true });
        const spyDocumentClick = spyOn(component, 'clickout').and.callThrough();
        component.clickout(event);
        expect(spyDocumentClick).toHaveBeenCalled();
     });
    

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2022-01-23
      • 2017-04-23
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多