在我的Angular应用程序中,我有一个非常简单的enum
,名为AlertType
。我还有一个API响应对象,它的一个属性是enum
类型。如下所示:
export class ScanAlertModel {
public alertId: string;
public alertType: AlertType
}
在某些情况下,未设置此alertType
属性。我正在尝试使用Jasmine
测试这些。在我的Angular应用程序中,为了能够为没有连接alerttype
的alert
过滤Array<AlertModel>
,我只需应用如下过滤器:
this.scanAlerts.filter((a) => ((a.alertType === null)
这还可以。但是,当我的JSON包含根本没有alertType
的ScanAlertModel
实体时,我尝试测试这种过滤(作为更大功能测试的一部分(的测试无法正确过滤出记录。
很明显,这让我很困惑。任何帮助都将不胜感激。谢谢
首先,如果alertType
有时不存在,则用:?
将其声明为可选,如下所示:
export class ScanAlertModel {
public alertId: string;
public alertType?: AlertType;
}
过滤器不总是工作的原因是,如果属性未设置,它将不会严格等于null
。
更好的检查方法是使用hasOwnProperty()
:
this.scanAlerts.filter(alert => !alert.hasOwnProperty('alertType'));