单元测试:无法读取未定义的属性'toString'

时间:2018-03-27 10:55:40

标签: angular angular-ui-router karma-jasmine

单元测试下面抛出错误:TypeError:无法读取未定义的属性'toString'。怎么解决这个问题?

component.Ts code

//来自父级的输入值

@Input() path: treeDataKey;
ngOnInit() {
  this.getTestPlanData(this.testId);
  this.testPath = (this.path).toString().replace(/,/g,' /');
}
getTestPlanData(param:any) {
  //Do something
}

component.spec.ts

it('should call getTestPlanData', () => {
    expect(component.getTestPlanData).toHaveBeenCalled;
});

2 个答案:

答案 0 :(得分:0)

  

试试这个:

import {isUndefined} from "util";

  this.testPath = (this.path && !isUndefined(this.path))?
  (this.path).toString().replace(/,/g,' /'):'';

答案 1 :(得分:0)

根据您的@Input()类型为该treeDataKey变量添加默认值。

如果你没有input的价值,它会做什么,它将被分配empty value。 因此,如果在测试时未实例化parent component,则测试将以默认值运行。

@Input() path: treeDataKey = "";
ngOnInit() {
  this.getTestPlanData(this.testId);
  this.testPath = (this.path).toString().replace(/,/g,' /');
}
getTestPlanData(param:any) {
  //Do something
}