Rol*_*ubó 27 javascript reactjs jestjs react-testing-library
我有一个 React 组件,children如果 propisTrue是 true-y,它会返回由 React 渲染的组件。如果其 propisTrue为 false-y,则组件返回null,并且 React 不会渲染任何内容。
我需要将它作为一个组件进行测试,安装它,传递 prop,并测试当 prop 为 true-y 时它的子级是否被渲染,或者当prop 为 false-yisTrue时我们得到渲染。nullisTrue
这是我的组件:
const RenderIf = ({ isTrue, children }) => {
if (isTrue) {
return children;
}
return null;
}
export default RenderIf
Run Code Online (Sandbox Code Playgroud)
小智 48
const { container } = render(<RenderIf isTrue={false}>Content</RenderIf>)
expect(container).toBeEmptyDOMElement()
Run Code Online (Sandbox Code Playgroud)
我认为在这种情况下测试整个 html 可能就可以了。React-testing-library 用一个 div 包装你的内容,这样你就可以像这样:
const { container } = render(<MyComponent ifTrue={false}>Content</MyComponent>);
expect(container.innerHTML).toBe('<div></div>');
Run Code Online (Sandbox Code Playgroud)
如果您不喜欢这种方法,您仍然可以使用 test-id / text 渲染子项并查询它以查看它是否存在。
import React from 'react';
import { render } from '@testing-library/react';
import '@testing-library/jest-dom/extend-expect';
//...
describe('TestHistory', () => {
it('should render nothing if there are no history entries', () => {
// ARRANGE
// ACT
const { container } = render(
<TestHistory version={1} versionHistory={[]} datasetType={DatasetType.VALIDATION} />,
);
// ASSERT
expect(container).toBeEmptyDOMElement();
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21363 次 |
| 最近记录: |