首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用react测试库获得具有某些测试id的父div的子div?

如何使用react测试库获得具有某些测试id的父div的子div?
EN

Stack Overflow用户
提问于 2020-05-08 08:43:44
回答 2查看 19.8K关注 0票数 9

我希望在父元素中获得带有一些test-id的div元素。

我想做什么?

我有一个带有test-id“父-2”的父div,其中有一个div元素,其中包含文本删除。

我想撤回这个删除div元素。此外,还有多个Remove div元素。如下所示

代码语言:javascript
复制
<div data-test-id="parent-1">
    <div>Remove</div>
</div>
<div data-test-id="parent-2">
    <div>Remove</div>
</div>
<div data-test-id="parent-3">
    <div>Remove</div>
</div>

因此,在上面的html代码中,我希望单击从div删除div和父test-id = " parent -2“。

我试过像下面这样做

代码语言:javascript
复制
utils.fireEvent.click(getByText('Remove'));

这会抛出错误,找到多个删除实例。

我也试过这个utils.fireEvent.click(getByTestId('parent-2').children;

这个很管用。但这将访问父级的第一个子级。但是,希望对查询更加具体。

因此,如何解决这个问题,使我可以单击“删除div属于test-id”父-2的div。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-10 15:50:52

react testing库查询返回DOM节点,因此可以在顶部使用DOM。你需要这样的东西:

代码语言:javascript
复制
utils.fireEvent.click(getByTestId('parent-1').querySelector('div'));

querySelector采用CSS选择器,因此您可以为内部div提供一个类,并且更加具体:

代码语言:javascript
复制
utils.fireEvent.click(getByTestId('parent-1').querySelector('.myClass'));

见:

票数 11
EN

Stack Overflow用户

发布于 2022-07-27 01:49:59

我认为更有机的方法是使用within

代码语言:javascript
复制
import {within} from '@testing-library/dom';

const secondParent = getByTestId('parent-2');
utils.fireEvent.click(within(secondParent).getByText('Remove'));

这是within的文档描述,

(getQueriesForElement的别名)接受DOM元素并将其绑定到原始查询函数,允许在不指定容器的情况下使用它们。它是构建在此API之上的库的推荐方法,并在React测试库和Vue测试库中使用。

参考资料:

https://testing-library.com/docs/dom-testing-library/api-within/

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61675320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档