在 Jasmine Test 中销毁 undefined
Destroy undefined in Jasmine Test
我正在为 .ts
文件编写测试用例。当我 运行 命令 ng test
失败时。
我试图在 beforeEach
中模拟 destroy
方法仍然失败。
Component.ts
export class DepComponent implements OnInit, OnDestroy {
public _ref: any;
deleteme(): void {
//console.log(id);
this.removeObject();
this.nodedetaildelete.emit();
}
removeObject() {
this.markcomponentdispose = true;
console.log("delted component!");
this._ref.destroy();
}
}
Component.spec.ts
describe('DeploycomponentComponent', () => {
let component: DeploycomponentComponent;
let fixture: ComponentFixture<DeploycomponentComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ DeploycomponentComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(DeploycomponentComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should call deleteme', () => {
let response = component.deleteme();
let resp = component.removeObject();
spyOn(component._ref,'destroy')
expect(response).not.toBeNull();
});
});
当我 运行 ng 测试失败时显示以下错误
我看不出哪里可以根据您的组件在 class 中为您的 _ref
成员设置值。
在您的情况下,预先为您的 _ref
分配一个值很容易:
it('should call deleteme', () => {
// Mock this before you actually call your testing methods
component._ref = {
destroy: () => {}
};
let response = component.deleteme();
let resp = component.removeObject();
spyOn(component._ref,'destroy')
expect(response).not.toBeNull();
});
我正在为 .ts
文件编写测试用例。当我 运行 命令 ng test
失败时。
我试图在 beforeEach
中模拟 destroy
方法仍然失败。
Component.ts
export class DepComponent implements OnInit, OnDestroy {
public _ref: any;
deleteme(): void {
//console.log(id);
this.removeObject();
this.nodedetaildelete.emit();
}
removeObject() {
this.markcomponentdispose = true;
console.log("delted component!");
this._ref.destroy();
}
}
Component.spec.ts
describe('DeploycomponentComponent', () => {
let component: DeploycomponentComponent;
let fixture: ComponentFixture<DeploycomponentComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ DeploycomponentComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(DeploycomponentComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should call deleteme', () => {
let response = component.deleteme();
let resp = component.removeObject();
spyOn(component._ref,'destroy')
expect(response).not.toBeNull();
});
});
当我 运行 ng 测试失败时显示以下错误
我看不出哪里可以根据您的组件在 class 中为您的 _ref
成员设置值。
在您的情况下,预先为您的 _ref
分配一个值很容易:
it('should call deleteme', () => {
// Mock this before you actually call your testing methods
component._ref = {
destroy: () => {}
};
let response = component.deleteme();
let resp = component.removeObject();
spyOn(component._ref,'destroy')
expect(response).not.toBeNull();
});