AG-Grid gridReady 未在使用 Angular 和 Jest 的测试中调用

Posted

技术标签:

【中文标题】AG-Grid gridReady 未在使用 Angular 和 Jest 的测试中调用【英文标题】:AG-Grid gridReady not being called on tests with Angular and Jest 【发布时间】:2021-12-09 04:37:10 【问题描述】:

在 Jest 测试中未调用 Angular AG Grid 的 gridReady 方法。 你知道为什么吗?

这里有我的测试代码:

import TestBed from "@angular/core/testing";
import BrowserDynamicTestingModule, platformBrowserDynamicTesting from "@angular/platform-browser-dynamic/testing";
import AppComponent from "./app.component";
import FormsModule from "@angular/forms";
import AgGridModule from "ag-grid-angular";

describe('AG Grid', () => 
  it('calls grid ready', async()=> 
    TestBed.resetTestEnvironment();
    TestBed.initTestEnvironment(BrowserDynamicTestingModule,
      platformBrowserDynamicTesting());

    await TestBed.configureTestingModule(
      imports: [
        FormsModule,
        AgGridModule.withComponents([]),
      ],
      declarations: [AppComponent]
    ).compileComponents();

    const fixture = TestBed.createComponent(AppComponent);
    const component = fixture.componentInstance;

    fixture.detectChanges();
    expect(component.api).toBeDefined();
    expect(component.columnApi).toBeDefined();

  );
)

Here 你可以看到它的代码沙箱。 Here 是一个 GitHub 存储库。

【问题讨论】:

【参考方案1】:

fixture.detectChanges()之后使用await fixture.whenStable()解决了问题

【讨论】:

以上是关于AG-Grid gridReady 未在使用 Angular 和 Jest 的测试中调用的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Vuejs 中访问 ag-Grid API

ngFor 中的 Angular 动态事件名称

AG Grid:通过 ComponentFactoryResolver 在组件中加载网格时未触发 gridReady 事件

隐藏 Ag-Grid 中的特定行值 - Angular

Syncfusion 控件未在 iOS 本机 UIWebView 上加载

在两个单独的 ag-Grid 上使用 ag-Grid 的 sizeColumnsToFit() 时警告“网格零宽度”,由选项卡菜单显示