関数を単体テストしようとして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)