我很难找到正确的方法来测试一个div,它的文本被多个元素分解-错误说'无法找到一个元素的文本:这可能是因为文本被多个元素分解,但没有解释如何这样做。
为了解释我试图测试的内容,jest render()fn中返回的元素如下所示:
<div>
<div
class="inventory-wrapper"
>
<span>
5
</span>
item
s
left
</div>
</div>
</body>
我试图测试里面的文本是'5 items left',但正如你所看到的-文本被一个span标签和多行分开。
据我所知,我应该只使用getByRole()来定位它?这是否意味着我需要向.inventory-wrapper div添加role ='...'?然后我如何测试文本'5 items left'
任何帮助正确的等待目标这样的东西将非常感谢
2条答案
按热度按时间xqkwcwgp1#
按角色获取可能是首选方法,但这不是查询DOM的唯一方法。
我通过在组件中添加一个测试id,查询它并使用它的文本内容来解决这个问题。只要确保测试id传递给组件中的根元素。
rjee0c152#
其中
element.textContent
返回元素的文本内容。然后你可以按照你想要的方式处理它。你可以试着检查它是否等于===
或match
等。这是处理多行文本的几种方法之一。P.S.
screen
比getByTestId
更优选。