#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
код для его лучшего понимания. Иначе это будет закрыто в ближайшее время