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