Angular 当我有一个局部变量时,如何测试函数?

Angular 当我有一个局部变量时,如何测试函数?,angular,testing,jasmine,Angular,Testing,Jasmine,当我调整窗口大小时,我想做些什么,在这种情况下,请按item1 export class MyComponent { defaultArray = []; @HostListener('window:resize') handleResize() { clearTimeout(this.resizeId); this.resizeId = setTimeout(() => { this. handleItemsWidth(); }, 500

当我调整窗口大小时,我想做些什么,在这种情况下,请按item1

export class MyComponent {
  defaultArray = [];

  @HostListener('window:resize')
  handleResize() {
    clearTimeout(this.resizeId);
    this.resizeId = setTimeout(() => {
      this. handleItemsWidth();
    }, 500);
  }
在我想测试defaultArray.length是否更改之后

   handleItemsWidth() {
    const block = document ? document.getElementById('myBlock') : null;
    if (block) {
      defaultArray.push('item1');
    }
  }
}
这是我的测试用例,我无法执行该操作,因为我无法访问局部变量

it('should test if defaultArray length was changed', function () {
  component.defaultArray = [];
  component.handleItemsWidth();
  fixture.detectChanges();
  expect(component.defaultArray.length).toBe(1);
});

不测试实现细节-defaultArray变长的外部结果是什么?如果有可能触发事件,我也不会直接调用该方法,而是这样做。对于这种情况,这是个好主意,但是如果我的某物依赖于函数中的局部变量,我如何测试某物?什么“某物”?这里没有足够的信息来告诉您更好的方法可能是什么样子。对于exmaple,我有一个函数,类似于:if(window.innerHeight<500){this.state=true;//variable from component}但是window.innerHeight是如何可读的,只是我无法在测试中设置它来测试状态是否已更改