Я пишу тестовые примеры для файла .ts. когда я запускаю команду ng test, она не работает.
Я пытался издеваться над методом destroy внутри beforeEach, но все равно терпел неудачу.
Компонент.ts
export class DepComponent implements OnInit, OnDestroy {
public _ref: any;
deleteme(): void {
//console.info(id);
this.removeObject();
this.nodedetaildelete.emit();
}
removeObject() {
this.markcomponentdispose = true;
console.info("delted component!");
this._ref.destroy();
}
}
Компонент.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, он не работает, показывая следующую ошибку
общедоступный _ref: любой; как собственность
вы только что объявили это public _ref: any;, где вы добавляете его значение? Вы используете его в шаблоне?
Я не знаком с angular. Этот варибал используется только внутри метода removeObject ()





Я не вижу, где можно установить значение для вашего члена _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();
});
Что такое
this._refКстати?. Где вы определяете его значение?this._refне определено!