【发布时间】:2021-06-05 08:32:54
【问题描述】:
在我的项目中,我使用 mat-menu:
<div [matMenuTriggerFor]="menu"
[matMenuTriggerData]="menuTriggerData"
(menuOpened)="isMenuOpen()"
(menuClosed)="isMenuClose()">
<ng-content></ng-content>
</div>
<mat-menu #menu="matMenu">
<ng-template matMenuContent let-menuListWidth='menuListWidth'>
<div [style.width.px]="menuListWidth">
<button *ngFor="let item of menuItems"
(click)="onClick(item.value)">
{{ item.name }}
</button>
</div>
</ng-template>
</mat-menu>
为了计算叠加层的宽度,我使用了getter函数:
export class MenuComponent {
@ViewChild(MatMenuTrigger, { static: true, read: ElementRef })
menuElementRef: ElementRef<HTMLElement>;
get menuTriggerData() {
return {
menuListWidth: this.menuElementRef.nativeElement.clientWidth
};
}
}
在.spec文件中,我在做测试:
it('getter should be defined', function () {
spyOnProperty(component, 'menuTriggerData', 'get').and.returnValue({menuListWidth: 150});
expect(component.menuTriggerData).toEqual({menuListWidth: 150});
}
测试成功,但没有 getter 覆盖。 需要在测试中添加什么来覆盖组件中的 getter?
【问题讨论】:
标签: angular unit-testing testing angular-material jasmine