我正在尝试对该函数进行单元测试editDependentInfo()
,但出现错误,因为在该函数中,populateEditDepInfo()
正在调用另一个函数并populateEditDepInfo
具有this.dependentsInfo
属性,并且测试从中EditDependentInfo
尝试访问但无法访问请找到以下代码并让我知道应该做什么我愿意
let dependentsInfo: Dependents;
class ProfileDependentsStub {
dependentInfoChange: Subject<any[]> = new Subject<any[]>();
dependentInfoDelete: Subject<any[]> = new Subject<any[]>();
data = {
body: [{states: [{name: "Alabama", code: "AL"}]}, {countries: [{name: "UNITED STATES", code: "USA"}]}, ['relationshipType'], {hideDBCardStatus:"no"}, {hsaenrollmentStatus: "Enrolled"},{beneficiaryType:["Contingent", "Primary"]},
{relationshipType:["Adopted Child"]}, {status:["Active"]},
{prefixlist: ["DEACON"]},{prefixlist: ["DEACON"]}, {addressDetails:[{addressLineOne: "6226 3RD DRIVE"}]}, {beneficiaryList:[{id:123, firstName:"David"}]},
{dependentsList:[{id:1234, employeeId:909}]} ]}
getChildObject = function (href) {
return { href: '' };
};
getChildLinks = function () {
return Observable.of(ResponseData);
};
getLabelList = function (label) {
return label;
};
addChildObjects = function (links) {
return links;
};
addLabelList = function (labels) {
return labels;
};
getStateCountryList = function () {
return Observable.of(this.data);
};
getRelationAndStatusList = function () {
return Observable.of(this.data);
};
getPrefixSuffixList = function () {
return Observable.of(this.data);
};
populateEditDepInfo = function(data){
return data;
}
getDependentsInfoDetails = function () {
this.data.body['dependentsList'] = new Array('John Smith');
return Observable.of(this.data);
};
}
失败的测试
it('should edit Dependent Info', () => {
component.editDependentInfo(null,this.userDependentInfo)
expect(component.isUpdateDependentInfo).toBeTruthy();
});
我正在测试的组件
export class {
dependentsInfo: Dependents;
editDependentInfo(event = null, userDependentInfo: Dependents) {
this.dependentsInfo = <Dependents>{};
this.clearSelectValues();
this.isUpdateDependentInfo = true;
this.dependentsInfo = userDependentInfo;
this.populateEditDepInfo();
}
populateEditDepInfo(): void {
this.saveDepInfo = false;
if (this.dependentsInfo.id) {
this.dependentId = this.dependentsInfo.id;
}}
}
样本家属类
class Dependents {
name: string;
id: string;
dependentType: string;
status: string;
ineligibleReason: String;
depndtDebitCardStatus: string;
showCardStatusfInfo: boolean;
addressLineOne: string;
addressLineTwo: string;
addressLineThree: string;
city: string;}
我得到的错误
TypeError: Cannot read property 'id' of undefined
at ProfileDependentsViewComponent.populateEditDepInfo (webpack:///./src/app/profile/_profile-dependents-view/profile-dependents-view.component.ts?:207:33)
at ProfileDependentsViewComponent.editDependentInfo (webpack:///./src/app/profile/_profile-dependents-view/profile-dependents-view.component.ts?:202:14)
at Object.eval (webpack:///./src/app/profile/_profile-dependents-view/profile-dependents-view.component.spec.ts?:135:19)