我想编写一个单元测试,期望该变量根据窗口的innerWidth
包含特定值。
在单元测试中,我使用window.innerWidth = 1000;
。但是,我收到一条错误消息,提示Cannot assign to 'innerWidth' because it is a read-only property.
。
代码(home.component.spec.ts):
xit('should order the cards in the appropriate order on desktop', () => {
spyOn(component, 'reOrderCards');
window.innerWidth = 1000;
})
有什么方法可以模拟
innerWidth
属性吗? 最佳答案
别认为这是不可能的。解决方法是,我创建了另一个变量,用于存储innerWidth
的值,以便可以对其进行正确的单元测试。
public screenWidth: number;
ngOnInit() {
this.screenWidth = window.innerWidth; // Get initial innerWidth so the variable is immediately defined for reOrderCards() to recognise
this.reOrderCards();
}
@HostListener('window:resize', [])
onResize() {
this.screenWidth = window.innerWidth;
this.reOrderCards();
}
reOrderCards() {
if(this.screenWidth < 768) {
// Do logic
}
}
关于angular - 单元测试:如何使用Angular + Jasmine模拟窗口对象上的innerWidth属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56596372/