在我的组件测试中,我需要找到合适的输入元素。
我可以通过以下方式找到所有这些:
let loader: HarnessLoader = TestbedHarnessEnvironment.loader(fixture);
const inputs = await loader.getAllHarnesses(MatInputHarness);
expect(inputs).toBeTruthy();
但是如何在数组中找到正确的输入呢?
在内心深处,每个“输入”都有 id,因为我看到了它:
console.log(`id: ${await inputs[0].getId()}`);
输出正确的id。
我是否必须循环遍历整个输入列表来检查每个元素的 id?并为每一个都调用“等待”?
恐怕这可能计算量太大。而且,这味道不对。
如何通过id获取所需的输入元素?
显然(我在这里真的很讽刺),该文档非常有用。
通过阅读这篇文章(https://material.angular.io/guide/using-component-harnesses)我明白了。经过一些学习和挖掘,这里有一些知识以及稍后的解决方案。
所以代码如下:
await loader.getHarness(MatInputHarness.with({ selector: '#elementId' }));
显然,选择器可以使用CSS标准。按类别搜索是
{selector: '.className'}
附注有用的提示是可以优化搜索并缩小范围
const smallerScopeLoader = await loader.getChildLoader('#childComponent');