反应测试库-避免getBy?

问题描述 投票:0回答:1

[使用React Testing Library测试组件时,我发现自己以getBy*开头,偶尔需要用queryBy*替换它(例如,如果我需要检查元素的不存在)。我的测试最终以getByqueryBy的混合形式结束,最近我刚刚在所有内容上都使用了queryBy

让我开始思考...有没有理由使用getBy

这样的声明按预期失败,不需要抛出错误:

expect(queryByText('Click me')).toBeInTheDocument();
expect(queryByLabel('Name').value).toBe('George')

如果未找到元素,抛出错误有什么好处,并且有理由不对所有(同步)查询使用queryBy吗?

[使用React Testing库测试组件时,我发现自己从getBy *开始,偶尔需要用queryBy *替换它(例如,如果我需要检查...的不存在,

javascript reactjs testing jest react-testing-library
1个回答
0
投票
正如您已经说过的,getBy *和queryBy *之间的区别在于,如果找不到元素,而没有找到queryBy *,则getBy *会引发错误。对我来说,如果我期望有东西存在,我将始终使用getBy *,并且仅在断言没有东西的情况下使用queryBy *。如果我不希望出现某个元素,那么我想在测试中尽早了解它,无论在哪里调用getBy *。

所以我说抛出错误的好处是,您始终确保测试失败将指向根本问题(无法找到您期望存在的元素),而不是该根本问题的副作用(尝试在稍后的测试中使用该元素)。

© www.soinside.com 2019 - 2024. All rights reserved.