Ошибка типа: невозможно прочитать свойство 'prod_id' из неопределенного - PullRequest
0 голосов
/ 08 июня 2018

Пожалуйста, у меня есть проблема.Мне нужно протестировать функцию, подобную приведенному ниже:

  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();
})

Моя ошибка:

Ошибка типа:Не удается прочитать свойство 'prod_id' из неопределенного

Эта ошибка может быть из-за того, что prod_id я беру из getbyid и в функции onupdatprod() я вызываю updatprod.prod_id= this.prod.prod_id;

Можете ли вы спроситьМне любая идея, пожалуйста, как читать значение prod_id

Спасибо

1 Ответ

0 голосов
/ 28 сентября 2018

Ваш метод onupdatprod ссылки this.prod:

updatprod.prod_id= this.prod.prod_id;

Однако, this.prod определено в вашем методе populateForm:

this.prod= prod;

Ваши тестовые вызовы onupdatprod но не звонит populateForm.Это означает, что когда onupdatprod пытается получить доступ к this.prod, он не определен.

Вам необходимо вызвать populateForm в вашем тестовом коде, чтобы определить this.prod.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...