我@testing-library
用来测试我的React
项目,它Material-UI
用作它的主要 UI 库。正如所@testing-library
暗示的,它的主要理念是以与用户使用它的方式完全相同的方式测试应用程序。例如,单击“提交”按钮或编辑标签为“用户名”等的输入。测试库为我提供了一些辅助方法,例如getByText
,getByLabel
等...。
我的问题是,对于某些测试,例如表单的输入测试,我需要查询输入的值或更改它的当前值。我需要getByLabel
查询我的标签并转到父组件以查询其中包含的输入。该库提供了一个closest
DOM 查询助手,但在某些情况下没有用,就像我刚刚描述的那样。
以这种方式编写测试感觉很好,我的意思是从用户的角度编写测试。但问题是我过于依赖Material-UI
. 也许在下一次升级中,输入及其对应的标签不是祖先节点的子节点,等等......。
有什么我做错了吗?还是它@testing-library
提供的测试哲学的陷阱?
这是我的包堆栈:
{
"@material-ui/core": "^4.7.1",
"@material-ui/icons": "^4.5.1",
"@material-ui/lab": "^4.0.0-alpha.34",
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.4.0",
"react": "^16.11.0",
"react-dom": "^16.11.0",
"react-scripts": "3.3.0-next.62"
}