如何在angular 8中测试window.innerWidth属性?
我在角度和TDD方面比较新。目前,我正在尝试测试一个函数,在调整大小事件期间调用该函数。以下是我的代码: header.component.ts如何在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
@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();
});
当我运行测试时,它会输出测试失败,并说::找不到要监视的对象。
。有什么想法或线索可以解决这个问题吗?非常感谢您的帮助。看看这个答案。看看这个答案。