Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular TypeError:无法读取属性';产品标识';未定义的_Angular_Unit Testing_Typescript_Testing_Jasmine - Fatal编程技术网

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

你能问我一些想法吗,如何读取value
prod\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?