Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用React测试库测试React组件是否返回null或其子组件?_Javascript_Reactjs_Jestjs_React Testing Library - Fatal编程技术网

Javascript 如何使用React测试库测试React组件是否返回null或其子组件?

Javascript 如何使用React测试库测试React组件是否返回null或其子组件?,javascript,reactjs,jestjs,react-testing-library,Javascript,Reactjs,Jestjs,React Testing Library,我有一个React组件,如果propisTrue是truth-y,它将返回React要呈现的子对象。如果其propisTrue为false-y,则组件返回null,并且React不会呈现任何内容 我需要将它作为一个组件进行测试,安装它,通过道具,并测试当道具isTrue为true-y时,它的子对象是否得到渲染,或者如果isTrue为false-y,我们是否得到null 以下是我的组件: const RenderIf = ({ isTrue, children }) => { if

我有一个React组件,如果prop
isTrue
是truth-y,它将返回React要呈现的
子对象。如果其prop
isTrue
为false-y,则组件返回
null
,并且React不会呈现任何内容

我需要将它作为一个组件进行测试,安装它,通过道具,并测试当道具
isTrue
为true-y时,它的子对象是否得到渲染,或者如果
isTrue
为false-y,我们是否得到
null

以下是我的组件:

const RenderIf = ({ isTrue, children }) => {
    if (isTrue) {
        return children;
    }
    return null;
}
export default RenderIf

我认为在这种情况下,测试整个html可能是可以的。 react测试库用一个div包装您的内容,这样您就可以:

const { container } = render(<MyComponent ifTrue={false}>Content</MyComponent>);
expect(container.innerHTML).toBe('<div></div>');
const{container}=render(Content);
expect(container.innerHTML).toBe(“”);

如果您不喜欢这种方法,您仍然可以使用测试id/文本呈现子级,并查询它是否存在。

这没有做任何普通函数不会做的事情,其中没有任何反应;现在还不清楚你在没有酶的情况下测试它时遇到了什么问题<例如,code>expect(RenderIf({isTrue:false,children[]})).toBeNull()
。很抱歉,我要将它作为一个组件进行测试,装载组件,传递带有JSX children元素的prop,然后测试当值为true或false时,子级是否在那里,然后检查值为null。如果不是,那么在其他组件中对此使用什么。例如,React测试库?是的,他们正在使用React测试库。那么您是否尝试阅读您实际使用的工具的文档?为什么提到你没有使用酶,而不是你正在使用什么?