Angular TypeError:无法读取属性';产品标识';未定义的
拜托,我有个问题。我需要测试一个函数,如下面的代码:Angular TypeError:无法读取属性';产品标识';未定义的,angular,unit-testing,typescript,testing,jasmine,Angular,Unit Testing,Typescript,Testing,Jasmine,拜托,我有个问题。我需要测试一个函数,如下面的代码: populateForm() { this.activatedRoute.params.subscribe( params => { this.ws.getbyid(params['id']).subscribe( prod=> { this.prod= prod; this.editprodForm.controls['pro
populateForm() {
this.activatedRoute.params.subscribe(
params => {
this.ws.getbyid(params['id']).subscribe(
prod=> {
this.prod= prod;
this.editprodForm.controls['prodnr'].setValue(prod.prodnr);
this.editprodForm.controls['proddesc'].setValue(prod.proddesc);
}
);
}
);
}
onupdatprod() {
this.areWeWaiting = true;
let updatprod= new Prod(
this.editprodForm.value
);
updatprod.prod_id= this.prod.prod_id;
this.ws.update(updatprod).subscribe(
result => {
if (result === true) {
Materialize.toast('success', 4000);
} else {
}
},
error => {
}
);
}
我的测试代码如下:
it('should call service.Updatewhen onupdateprod, Validation Error', done => {
const mock = [];
spyOn(component['as'], 'UpdateAlarms').and.callThrough()
let updateprod = new Prod('1231');
updateprod.prodnr= '4';
updateprod.proddesc= 'UpdateTest';
updateprod.prod_id= '1';
component['ws'].update(updateprod ).subscribe(fail => {
console.log('Validation Error')
console.log(fail)
expect(fail).toBeFalsy();
done();
});
component.onupdatprod();
})
我的错误是:
TypeError:无法读取未定义的属性“prod_id”
此错误可能是因为prod\u id
我从getbyid
获取,并在函数onupdateprod()
中调用updateprod.prod\u id=This.prod.prod\u id代码>
你能问我一些想法吗,如何读取valueprod\u id
Thanx您的方法onupdatprod
引用了this.prod
:
updatprod.prod_id= this.prod.prod_id;
但是,this.prod
是在您的方法populateForm
中定义的:
this.prod= prod;
您的测试调用onupdatprod
,但不调用populateForm
。这意味着当onupdatprod
试图访问This.prod
时,它是未定义的
您需要在测试代码中调用populateForm
,以便定义this.prod
。何时调用populateForm?