Ошибка была выдана в afterAll ReferenceError: не удается получить доступ к ‘SubscriptionEditIconComponent’ перед инициализацией

#angular #karma-jasmine #ag-grid

#angular #karma-jasmine #ag-grid

Вопрос:

я создаю ag-grid и запускаю модульный тест моего модуля, который часто показывает эту ошибку. я не могу определить, почему возникает эта ошибка.

Ошибка была выдана в afterAll
ReferenceError: не удается получить доступ к ‘SubscriptionEditIconComponent’ перед инициализацией

SubscriptionDeleteIconComponent является дочерним компонентом ag-grid, который содержит значок удаления

Файл спецификации

     import { async, ComponentFixture, TestBed } from '@angular/core/testing';
    import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
    import { BrowserAnimationsModule } from '@angular/platform- 
    browser/animations';
    import { ComponentsModule } from 
     'src/app/common/components/components.module';
    import { dialogMock, S

ubscriptionDataMock, SubscriptionServiceMock } from 
    '../../mocks/subscription.mock';
    import { SubscriptionService } from '../../services/subscription.service';

    import { SubscriptionEditIconComponent } from './subscription-edit- 
    icon.component';

    fdescribe('SubscriptionEditIconComponent', () => {
      let component: SubscriptionEditIconComponent;
      let fixture: ComponentFixture<SubscriptionEditIconComponent>;

    beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ SubscriptionEditIconComponent ],
      imports: [
        ComponentsModule,
        BrowserAnimationsModule
      ],
      providers: [
        { provide: SubscriptionService, useClass: SubscriptionServiceMock },
        { provide: MatDialogRef, useValue: dialogMock },
        { provide: MAT_DIALOG_DATA, useValue: {} },
      ]
    })
    .compileComponents();
    }));

    beforeEach(() => {
       fixture = TestBed.createComponent(SubscriptionEditIconComponent);
       component = fixture.componentInstance;
       fixture.detectChanges();
    });

      it('should create', () => {
        expect(component).toBeTruthy();
      });
    });
  

ts-файл

 import { Component, OnInit, ViewChild } from '@angular/core';
import { ICellRendererAngularComp } from 'ag-grid-angular';
import { PopupComponent } from 's

rc/app/common/components/popup/popup.component';
import { SubscriptionService } from '../../services/subscription.service';
import { SubscriptionPopupComponent } from '../subscription- 
popup/subscription-popup.component';

@Component({
  selector: 'aiq-subscription-edit-icon',
  templateUrl: './subscription-edit-icon.component.html',
  styleUrls: ['./subscription-edit-icon.component.scss']
})
export class SubscriptionEditIconComponent  implements 
ICellRendererAngularComp {

  params = {
    reportId: '',
    subscriptionName: ''
  };
  @ViewChild("reviewSubscriptionPopup", { static: false }) 
reviewSubscriptionPopup: PopupComponent;

  constructor(public service: SubscriptionService) { }

  agInit(params: any): void {
   
  }

  refresh(): boolean {
    return false;
  }   
}
  

если напрямую запустить только этот компонент, он не будет запущен. Его внутренний компонент ag-grid. т. Е. мы показываем ag-grid, и внутри него есть значок редактирования, если мы нажмем на него, он позволит редактировать данные этой строки.

Комментарии:

1. Нам нужно больше кода. Не могли бы вы, пожалуйста. добавьте spec код, в котором вы пытаетесь запустить модульный тест?

2. не только spec код, но и component код для его лучшего понимания. Иначе это будет закрыто в ближайшее время