Reactjs 如何测试使用react测试库呈现的react组件道具的值

Reactjs 如何测试使用react测试库呈现的react组件道具的值,reactjs,react-testing-library,Reactjs,React Testing Library,这里,如果Abc是一个类组件,并且我们正在使用react测试库测试Abc,那么有没有办法测试prop1的值 const{getByTestId}=render() 现在我使用testId获取组件Xyz getByTestId(“comp-xyz”) 我能得到这个组件的道具吗? getByTestId(“comp-xyz”).props()?不​​测试库鼓励您测试用户与屏幕的交互。 创建依赖于组件数据(如道具和状态)的测试无助于此类测试, 因为用户不直接与道具交互,而是与通过道具呈现的元素交互

这里,如果Abc是一个类组件,并且我们正在使用react测试库测试Abc,那么有没有办法测试prop1的值

const{getByTestId}=render()
现在我使用testId获取组件Xyz
getByTestId(“comp-xyz”)

我能得到这个组件的道具吗?
getByTestId(“comp-xyz”).props()

不​​测试库鼓励您测试用户与屏幕的交互。 创建依赖于组件数据(如道具和状态)的测试无助于此类测试, 因为用户不直接与道具交互,而是与通过道具呈现的元素交互

另一点是依赖于实现细节的测试是脆弱的测试,也就是说, 实现中的任何更改(不改变组件的行为)都可能导致其测试失败 产生“假阴性”


在这个文档链接中,他们更好地解释了这一点:

不,是的​​测试库鼓励您测试用户与屏幕的交互。 创建依赖于组件数据(如道具和状态)的测试无助于此类测试, 因为用户不直接与道具交互,而是与通过道具呈现的元素交互

另一点是依赖于实现细节的测试是脆弱的测试,也就是说, 实现中的任何更改(不改变组件的行为)都可能导致其测试失败 产生“假阴性”


在这个文档链接中,他们对它进行了更好的解释:

这可能会帮助某些人:

<Abc> 
  <Xyz data-testid="comp-xyz" prop1={pqr}/>
</Abc>


请注意,文档中不鼓励这种方法,但有时你必须做你必须做的事情。

这可能会帮助某些人:

<Abc> 
  <Xyz data-testid="comp-xyz" prop1={pqr}/>
</Abc>


请注意,文档中不鼓励这种方法,但有时您必须做您必须做的事情。

从文档中。。。测试库鼓励您避免测试实现细节,如您正在测试的组件的内部结构(尽管这仍然是可能的)-请参阅下面的我的答案,了解它在文档中的可能性。。。测试库鼓励您避免测试实现细节,如您正在测试的组件的内部结构(尽管它仍然是可能的)——请参阅下面的答案,了解它的可能性