Я пытаюсь выполнить модульное тестирование компонента, содержащего ag-Grid, но функция onGridReady
никогда не вызывается, поэтому все тесты, включающие ag-Grid, завершаются неудачно. Как я могу сделать так, чтобы onGridReady действительно вызывался до запуска моих тестов?
spe c file:
describe('MyComponent', () => {
let spectator: SpectatorHost<MyComponent>;
let fixture: ComponentFixture<MyComponent>;
const createHost = createHostFactory({
component: MyComponent,
entryComponents: [MyComponent],
imports: [
TranslateModule.forRoot(),
AgGridModule.withComponents([]),
MatTooltipModule,
InlineSVGModule.forRoot(),
MaterialModule,
HMSharedModule,
],
providers: [
{
provide: MatDialogRef,
useValue: [],
},
{
provide: MAT_DIALOG_DATA,
useValue: [],
},
HttpClient,
HttpHandler,
],
});
beforeEach(() => {
spectator = createHost(`<MyComponentSelector></MyComponentSelector>`, {
hostProps: {},
});
fixture = spectator.fixture;
fixture.detectChanges();
});
it('should create', () => {
expect(spectator.component).toBeTruthy();
});
it('should detect changes', () => {
spectator.fixture.detectChanges();
});
"должен создавать" работает, но "должен обнаруживать изменения" не удается с этой ошибкой :
TypeError: Cannot read property 'setColumnDefs' of undefined
в html, вот моя ag-сетка:
<ag-grid-angular
style="height: 157px"
#agGrid1
class="ag-grid ag-theme-balham"
[rowSelection]="rowSelection"
[columnDefs]="columnDefs1"
[gridOptions]="gridOptions"
(gridReady)="onGridReady($event)"
(gridSizeChanged)="resizeColumns($event)"
(cellValueChanged)="updateBottomGrid('agGrid1', false)"
[singleClickEdit]="true"
>
</ag-grid-angular>
и вот onGridReady:
onGridReady(params: any): void {
console.log('onGridReady called successfully');
if (this.agGrid1) {
this.agGrid1.api = params.api;
}
}
Консольный оператор никогда не печатается, поэтому onGridReady
почему-то никогда не вызывается. Как я могу заставить его вызываться перед модульным тестом?
Редактировать: Кто-то упомянул, что мне нужно предоставить данные для columnDefs, но у меня уже есть initializeColumnDefs()
, который определяет все столбцы, и я подтвердил, что это действительно вызывается во время модульного теста, так что это не проблема.
Кроме того, я не думаю, что это актуально, но этот компонент является MatDialog.