Уничтожить неопределенное в Jasmine Test

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

Что такое this._ref Кстати?. Где вы определяете его значение? this._ref не определено!

Naren 11.12.2020 07:21

общедоступный _ref: любой; как собственность

arj 11.12.2020 07:24

вы только что объявили это public _ref: any;, где вы добавляете его значение? Вы используете его в шаблоне?

Naren 11.12.2020 07:25

Я не знаком с angular. Этот варибал используется только внутри метода removeObject ()

arj 11.12.2020 07:36
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
4
417
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не вижу, где можно установить значение для вашего члена _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();
});

Другие вопросы по теме