Я пишу тестовые примеры для файла .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
не определено!