首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React测试库+资料UI (v4)隐藏组件

React测试库+资料UI (v4)隐藏组件
EN

Stack Overflow用户
提问于 2022-01-07 17:51:23
回答 1查看 539关注 0票数 0

我是新来的反应测试库。我想测试用material的Hidden组件包装的代码,但是测试失败了(尽管我的组件在DOM中是可见的)。

组件

代码语言:javascript
复制
import { Hidden } from '@material-ui/core'
import React from 'react'

function App() {

    return (
        <>
            <h4>This is always visible</h4>
            <Hidden xsUp={true}>
                <h3>The hidden element</h3>
            </Hidden>
        </>
    )

}

xsUp设置为true 隐藏DOM中的 h3false 显示E 213E 114h3E 215在DOM中显示

,但我不明白为什么将其设置为false会使下面的测试失败,即使组件在DOM中是可见的

测试

代码语言:javascript
复制
test("Hidden element should be visible", async () => {
  render(<App />);

  const h3 = await screen.findByRole('heading', { name: "The hidden element"}) // same effect if I use screen.getByRole or getByText

  expect(h3).toBeInTheDocument();
});

注意:我测试了h3是否被封装在测试通过的隐藏元素中。但是将xsUp设置为true或false将失败。

请在这里试用一下,https://codesandbox.io/embed/magical-boyd-uzv9w?fontsize=14&hidenavigation=1&theme=dark

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-09 02:52:10

经过一些研究后,我发现我的组件可以用MuiThemeProvider包装,如图所示,如果xsUp = false通过测试,如果xsUp = true按预期进行,则会失败。

测试

代码语言:javascript
复制
import { render, screen } from '@testing-library/react'
import Greet from './Greet'
import { MuiThemeProvider } from '@material-ui/core';
import { createTheme } from '@material-ui/core/styles'
const theme = createTheme({ props: { MuiWithWidth: { initialWidth: 'xs' } } }) 


test("Hidden element should be visible", async () => {

  /*  render(<App />); */

  render(
    <MuiThemeProvider theme={theme}>
      <Greet />
    </MuiThemeProvider>

  );
  const h3 = await screen.findByRole('heading', { name: "The hidden element", hidden: true })
  expect(h3).toBeInTheDocument();
});

Referencehttps://github.com/enzymejs/enzyme/issues/2179 (尼柯拉斯对2019年9月9日的评论)

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

https://stackoverflow.com/questions/70625276

复制
相关文章

相似问题

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