测试用例失败,并显示一条错误,指出未定义的属性。
我正在将roleID传递给getResults()。当我运行ng test(“它应该创建组件”).truthy时,它会抛出错误-> undefined roleID。
我也曾在HTML中使用过类似* ngIf =“ x?.roleID”的HTML,在该错误中我遇到了同样的错误。
*.spec.ts
文件的示例:
// it('should create', () => {
// expect(component).toBeTruthy();
// });
// While running the ng Test for this Component, it is throwing error like ngOnit() Id of undefined property
答案 0 :(得分:1)
如果在组件中未定义this.inputArray
,则尝试访问ngOnInit
属性时roleID
方法将失败。在测试过程中,您必须确保正确初始化输入,即inputArray
属性,可以通过
a)将测试包装在适当设置输入的测试驱动程序组件中,例如通过使用类似这样的模板:
<your-component [inputArray]="validArray"></your-component>
b)在准备测试时初始化组件属性:
beforeEach(() => {
fixture = TestBed.createComponent(YourComponent);
component = fixture.componentInstance;
// assign valid array to property here:
component.inputArray = [{roleID: 1, ...}];
// ... your ngOnInit will be run now:
fixture.detectChanges();
});
答案 1 :(得分:0)
您的问题所在:您没有测试台,也没有正确的导入文件可以运行ng test
。
选中此tutorial以获取基本知识即可解决您的问题。
您将看到以下内容:
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { BannerComponent } from './banner.component';
describe('BannerComponent', () => {
let component: BannerComponent;
let fixture: ComponentFixture<BannerComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ BannerComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(BannerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeDefined();
});
});