如何在angular 8中测试window.innerWidth属性?

如何在angular 8中测试window.innerWidth属性?,angular,testing,jasmine,Angular,Testing,Jasmine,我在角度和TDD方面比较新。目前,我正在尝试测试一个函数,在调整大小事件期间调用该函数。以下是我的代码: header.component.ts @Component({ selector: 'app-header', templateUrl: './header.component.html', styleUrls: ['./header.component.scss'], host: { '(window:resize)': 'onResize

我在角度和TDD方面比较新。目前,我正在尝试测试一个函数,在调整大小事件期间调用该函数。以下是我的代码:

header.component.ts

@Component({
    selector: 'app-header',
    templateUrl: './header.component.html',
    styleUrls: ['./header.component.scss'],
    host: {
        '(window:resize)': 'onResize($event)'
    }
})
export class HeaderComponent implements OnInit {
    isDesktop = window.innerWidth > 768;
    menuOpen = false;

    constructor() {}

    ngOnInit() {}

    onResize(event) {
        this.isDesktop = event.target.innerWidth > 768;
        this.menuOpen = !this.isDesktop && this.menuOpen;
    }
}
describe('HeaderComponent', () => {
  let component: HeaderComponent;
  let fixture: ComponentFixture<HeaderComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ HeaderComponent,SideMenuComponent ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(HeaderComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  })

  it('should trigger onResize method when window is resized', () => {
    const spyOnResize = spyOn(component, 'onResize');
    window.dispatchEvent(new Event('resize'));
    expect(spyOnResize).toHaveBeenCalled();
  });
header.component.ts

@Component({
    selector: 'app-header',
    templateUrl: './header.component.html',
    styleUrls: ['./header.component.scss'],
    host: {
        '(window:resize)': 'onResize($event)'
    }
})
export class HeaderComponent implements OnInit {
    isDesktop = window.innerWidth > 768;
    menuOpen = false;

    constructor() {}

    ngOnInit() {}

    onResize(event) {
        this.isDesktop = event.target.innerWidth > 768;
        this.menuOpen = !this.isDesktop && this.menuOpen;
    }
}
describe('HeaderComponent', () => {
  let component: HeaderComponent;
  let fixture: ComponentFixture<HeaderComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ HeaderComponent,SideMenuComponent ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(HeaderComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  })

  it('should trigger onResize method when window is resized', () => {
    const spyOnResize = spyOn(component, 'onResize');
    window.dispatchEvent(new Event('resize'));
    expect(spyOnResize).toHaveBeenCalled();
  });
description('HeaderComponent',()=>{
let组件:HeaderComponent;
let夹具:组件夹具;
beforeach(异步(()=>{
TestBed.configureTestingModule({
声明:[HeaderComponent,SideMenuComponent]
})
.compileComponents();
}));
在每个之前(()=>{
fixture=TestBed.createComponent(HeaderComponent);
组件=fixture.componentInstance;
fixture.detectChanges();
});
它('应该创建',()=>{
expect(component.toBeTruthy();
})
它('调整窗口大小时应触发onResize方法',()=>{
const spyOnResize=spyOn(组件“onResize”);
dispatchEvent(新事件('resize'));
期望(spyOnResize).toHaveBeenCalled();
});
当我运行测试时,它会输出测试失败,并说:
:找不到要监视的对象。
。有什么想法或线索可以解决这个问题吗?非常感谢您的帮助。

看看这个答案。看看这个答案。