javascript - 如何在服务器端使用 Jest/Enzyme 测试 ag-grid
问题描述
当 rowModelType 为服务器端时,不会调用 ag-grid onGridReady,因此当我运行测试代码时找不到 agGridReact api,错误是“TypeError:无法读取未定义的属性'getDisplayedRowCount'”
这是我的测试代码(index.test.js)
let component = null;
let agGridReact = null;
const ensureGridApiHasBeenSet = async (componentRef) => {
await act(async () => {
await new Promise(function (resolve, reject) {
(function waitForGridReady() {
if (componentRef.current.getApi()) {
return resolve();
}
setTimeout(waitForGridReady, 10);
})();
});
});
};
beforeEach(async () => {
const ref = React.createRef();
component = mount(<SymbolMetadata ref={ref} />);
agGridReact = component.find(AgGridReact).instance();
await ensureGridApiHasBeenSet(ref);
});
afterEach(() => {
component.unmount();
agGridReact = null;
});
describe('metadata', () => {
it('metadata should have correct columns', () => {
console.info('agGridReact.api.getDisplayedRowCount());
});
});
这是 ag-grid (index.js)
const onGridReady = async (params: GridReadyEvent) => {
gridOptionsApi.current = params.api;
columnApiRef.current = params.columnApi;
};
<AgGridReact
animateRows
suppressColumnVirtualisation
serverSideFilteringAlwaysResets
rowModelType={'serverSide'}
rowHeight={32}
rowSelection={'single'}
defaultColDef={{
menuTabs: ['filterMenuTab'],
resizable: true,
filter: true,
}}
serverSideStoreType={ServerSideStoreType.Partial}
pagination
localeText={{
noRowsToShow: 'No Data',
}}
paginationPageSize={pageSize}
cacheBlockSize={pageSize}
headerHeight={24}
gridOptions={gridOptions}
onGridReady={onGridReady}
/>
解决方案
推荐阅读
- colors - 如何判断颜色是虚构的/不可能的?
- mysql - 如果它们在相邻小时内,则合并日期
- laravel - 如何检索 Laravel Passport 访问令牌过期时间或日期时间?
- javascript - Javascript:如何将字符串(例如:“foo bar”)编码为 int 表示?
- arduino - Arduino Uno Board 未显示在我的端口下或 Arduino 中
- ruby-on-rails - 在 CI 上使用 Cypress 启动 Rails 测试服务器
- java - Mongo 未在 Spring 4 Java API 中打开连接
- centos6 - 在 Centos 6 上找不到 devtoolset-3
- build - 让 CMake 构建但不安装外部项目
- javascript - 从 json 源导入图像 (create-react-app)