Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular:我如何在jasmine中测试@HostListener?_Angular_Unit Testing_Jasmine - Fatal编程技术网

Angular:我如何在jasmine中测试@HostListener?

Angular:我如何在jasmine中测试@HostListener?,angular,unit-testing,jasmine,Angular,Unit Testing,Jasmine,我在angular的组件中有下一个代码: @HostListener('window:scroll', []) onWindowScroll() { this.showScrollToTop = false; } 我如何在茉莉花中测试这个?如何启动窗口滚动事件?您可以通过调用窗口上的scrollTo函数来尝试进行简单的JS滚动 如果您想在顶部滚动,它将是: window.scrollTo(0, 0); 更新 var scrollEvent = document.createEvent('

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

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

我如何在茉莉花中测试这个?如何启动窗口滚动事件?

您可以通过调用窗口上的
scrollTo
函数来尝试进行简单的JS滚动

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

window.scrollTo(0, 0);
更新

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

window.dispatchEvent(scrollEvent)

测试窗口:滚动:

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

谢谢你的回复。但不幸的是,这不会触发“onWindowScroll”,您是否可以尝试使用
滚动
名称创建自定义事件?正在更新我的答案。但是如何指定要滚动的数量?
 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();
 });