Angular 单元测试失败
Angular unit testing getting failed
我正在尝试对函数 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
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)
以下解决方案对我有用
it('should edit Dependent Info', () => {
let userDependentInfo= { name: "john", ......} as any
component.editDependentInfo(null,this.userDependentInfo)
expect(component.isUpdateDependentInfo).toBeTruthy();
});
我正在尝试对函数 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
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)
以下解决方案对我有用
it('should edit Dependent Info', () => {
let userDependentInfo= { name: "john", ......} as any
component.editDependentInfo(null,this.userDependentInfo)
expect(component.isUpdateDependentInfo).toBeTruthy();
});