【发布时间】:2021-11-04 21:52:04
【问题描述】:
我有以下组件使用ResizeObserver(通过https://www.npmjs.com/package/@juggle/resize-observer)
export class ResizeTestComponent implements OnInit {
constructor(public hostRef: ElementRef) {}
ngOnInit() {
const resizeObserver = new ResizeObserver(() => this.resized());
resizeObserver.observe(this.hostRef.nativeElement);
}
resized() {
console.log('resized');
}
}
如果我手动更改窗口宽度,组件宽度会发生变化,resized 通过resized 函数输出到控制台,正如预期的那样。
我想编写一个 Jasmine 测试来检查在调整元素大小时是否调用了 resized 函数。
如何触发resizeObserver?
我已尝试发送 resize 事件,但未调用 resized 函数:
it('resized function is called when element is resized', async(() => {
const fixture = TestBed.createComponent(ResizeTestComponent);
fixture.detectChanges();
const resizedSpy = spyOn(fixture.componentInstance, 'resized');
window.dispatchEvent(new Event('resize'));
expect(resizedSpy).toHaveBeenCalled();
}));
【问题讨论】:
-
如果您了解 juggle 如何测试他们的代码,他们会尝试操纵元素本身。因此,在您的情况下,您可以尝试更改观察到的元素的样式。 github.com/juggle/resize-observer/blob/v3/test/…