【发布时间】:2021-07-15 12:42:11
【问题描述】:
我有一个在订阅中设置几个值的函数:
private getAllStatuses(): void {
this.refControllerService.getAllStatus().subscribe(data => {
this.StatusDTOList = data;
this.canEditDate = this.isEditableStatus();
this.isDEDUser = this.userAuthorisationService.isDEDUser();
this.initialised = true;
});
}
canEditDate & isDEDUser 都是私有的,它们在另一个函数中被访问:
public canEdit(): boolean {
return this.isDEDUser && this.canEditDate;
}
我试图在我的测试中设置这两个值,但到目前为止没有任何外观:
it('StatusComponent canEdit should return false', () => {
spyOn(refControllerService, 'getAllStatus').and.returnValue(of({ canEditDate: false, isDEDUser: false }) as any)
spyOn(userAuthorisationServiceSpy, 'isDEDUser').and.returnValue(false)
component.ngOnInit();
expect(component.canEdit).toBeFalsy();
});
我尝试了几种不同的方法,并且搜索了类似的问题,我对 Angular 比较陌生,有人可以解释一下我正在尝试什么吗?我可以在测试中设置该订阅中的值,以便我可以打开和关闭 canEdit() 的值吗?
【问题讨论】:
-
你什么时候打电话给
canEdit?是this.isEditableStatus()吗? -
CanEdit 是公开的,是被测函数,可以随时调用...
-
this.isEditableStatus() 在做什么?你确定它没有抛出任何错误,因为它没有被嘲笑?
标签: angular unit-testing karma-jasmine subscribe