首页 > 解决方案 > toBeInTheDocument() 和 toBeVisible() 有什么区别?

问题描述

在反应测试库中,我们有两个函数叫做toBeInTheDocument()toBeVisible()

1 expect(screen.getByText('hello')).toBeInTheDocument();
2 expect(screen.getByText('hello')).toBeVisible();

看来,上述两个断言的行为方式相同。这两个功能有什么不同,它们的用例是什么?

标签: unit-testingjestjsreact-testing-library

解决方案


根据testing-library/jest-dom文档,

toBeInTheDocument只是发现元素在 DOM 树中,而不管可见性如何

toBeVisible检查多个属性以查看它是否可见,例如

  1. display不等于none
  2. opacity比...更棒0
  3. hidden属性不存在
  4. visibility不等于hiddencollapse
  5. 检查元素,如果它的文档和父元素可见

推荐阅读