React 测试库 - 检查是否存在空 div
React testing library - check the existence of empty div
我正在测试一个组件,如果 ItemLength = 1
、render
returns null
.
const { container, debug } = render(<MyComp ItemLength={1} />);
当我在测试中调用 debug()
时,它显示 <div />
。如何检查组件是否在我的测试中返回一个空 div?
由于您正在尝试测试空 div,您可以尝试通过匹配节点来测试它的一种方法(另一种可能的解决方案是呈现的节点数)
getByText(container, (content, element) => element.tagName.toLowerCase() === 'div')
您可以使用 jest-dom's toBeEmpty
:
const { container } = render(<MyComp ItemLength={1} />)
expect(container.firstChild).toBeEmpty()
以下内容在不扩展 jest 期望的情况下也能正常工作:
const { container } = render(<MyComp ItemLength={1} />)
expect(container.firstChild).toBeNull();
更新:2020年的新方式
import { screen } from '@testing-library/react';
...
render(<MyComp ItemLength={1} />);
const child = screen.queryByTestId('data-testid-attribute-value');
expect(child).not.toBeInTheDocument();
toBeEmpty
- 抛出警告,你必须使用 toBeEmptyDOMElement
而不是
const pageObject = cretePage(<UserResources />, appState);
expect(pageObject.noContent).toBeInTheDocument();
expect(pageObject.results).toBeEmptyDOMElement();
.toHaveLength(0) 也应该在没有 jest-dom extension
的情况下工作
const wrapper = render(<MyComp ItemLength={1}/>);
expect(wrapper.container.innerHTML).toHaveLength(0);
可以使用js-dom的toBeEmptyDOMElement
方法。 https://github.com/testing-library/jest-dom#tobeemptydomelement
在使用 toBeEmptyDOMElement
之前,您需要安装 jest-dom
并设置 jest。 https://github.com/testing-library/jest-dom#usage
const { container } = render(<MyComp ItemLength={1} />)
expect(container.firstChild).toBeEmptyDOMElement()
注意:toBeEmpty
方法已被弃用,建议使用 toBeEmptyDOMElement
我正在测试一个组件,如果 ItemLength = 1
、render
returns null
.
const { container, debug } = render(<MyComp ItemLength={1} />);
当我在测试中调用 debug()
时,它显示 <div />
。如何检查组件是否在我的测试中返回一个空 div?
由于您正在尝试测试空 div,您可以尝试通过匹配节点来测试它的一种方法(另一种可能的解决方案是呈现的节点数)
getByText(container, (content, element) => element.tagName.toLowerCase() === 'div')
您可以使用 jest-dom's toBeEmpty
:
const { container } = render(<MyComp ItemLength={1} />)
expect(container.firstChild).toBeEmpty()
以下内容在不扩展 jest 期望的情况下也能正常工作:
const { container } = render(<MyComp ItemLength={1} />)
expect(container.firstChild).toBeNull();
更新:2020年的新方式
import { screen } from '@testing-library/react';
...
render(<MyComp ItemLength={1} />);
const child = screen.queryByTestId('data-testid-attribute-value');
expect(child).not.toBeInTheDocument();
toBeEmpty
- 抛出警告,你必须使用 toBeEmptyDOMElement
而不是
const pageObject = cretePage(<UserResources />, appState);
expect(pageObject.noContent).toBeInTheDocument();
expect(pageObject.results).toBeEmptyDOMElement();
.toHaveLength(0) 也应该在没有 jest-dom extension
的情况下工作const wrapper = render(<MyComp ItemLength={1}/>);
expect(wrapper.container.innerHTML).toHaveLength(0);
可以使用js-dom的toBeEmptyDOMElement
方法。 https://github.com/testing-library/jest-dom#tobeemptydomelement
在使用 toBeEmptyDOMElement
之前,您需要安装 jest-dom
并设置 jest。 https://github.com/testing-library/jest-dom#usage
const { container } = render(<MyComp ItemLength={1} />)
expect(container.firstChild).toBeEmptyDOMElement()
注意:toBeEmpty
方法已被弃用,建议使用 toBeEmptyDOMElement