Angular中的单元测试Ag-grid:未在小窗口尺寸上呈现的列

问题描述

我正在按照documentation使用带有ag-grid的angular。

我面临2个问题:

1。。我在vscode中编写了实际的代码,但无法在stackblitz中成功地复制它。

2。。我的网格包含10列,每个列的宽度为200,当我在vscode上执行 ng test --code-coverage 时,测试在chrome浏览器和我立即将其扩展到全屏。我所有的测试都通过了。但是,当我将chrome的大小调整为大约30%或更少的屏幕并重新运行测试时,它显示一个错误,即未定义某些列,这是因为标头数组的长度较小大于10。测试失败。

我要说的是,当我减小窗口大小时,就好像定义了前5列,其余的则没有。

有什么理由要发生这种情况吗?

也请帮助我设置相同的堆叠闪电战。

注意:由于stackblitz无法正常工作,我可能无法显示它,但是第二个测试中有一个console.log语句,这就是我所指的。

Link for stackblitz i tried to create

解决方法

如果要测试的是所有列是否实际上都出现在DOM中, 那么问题是默认情况下,网格会虚拟化行和列。也就是说,它仅为可见的行和列创建DOM节点。

因此,如果您的窗口足够小,以致某些列在网格的视口中不可见,则这些列将在DOM中不存在。当您将窗口的大小增大到可以暴露以前缺少的列(或滚动以显示它们)时,将在那时创建DOM节点。

快速解决方案是关闭列虚拟化(至少对于测试而言)。

请参见Does ag-grid supports column virtualization?