酶:测试孩子通过安装渲染失败,但通过浅时通过

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了酶:测试孩子通过安装渲染失败,但通过浅时通过相关的知识,希望对你有一定的参考价值。

我正在使用Enzyme + Jest测试一些React组件。

我有以下测试:

describe('<Modal />', () => 
  let wrapper;

  it('should render children props', () => 
    wrapper = shallow(<Modal />);
    wrapper.setProps(
      children: <div className='should-render'>This should be rendered</div>
    );
    expect(wrapper.find('.should-render').length).toEqual(1);
  );
);

而且它的工作原理就是找到。但是,如果我将shallow中的enzyme方法替换为mount,则测试将失败(无法找到具有.should-render类的元素)。

这是预期的行为吗?我虽然shallowmount之间的区别是访问生命周期方法的能力,但是渲染的工作原理相同。

答案

好所以问题是我对mount的运作方式缺乏了解。

我的Modal组件具有一个名为show的状态变量,如果将其设置为false,该状态变量将防止该元素挂载(我正在包装react-boostrap模态组件,它具有此行为)。默认情况下,此状态变量为false,并且由于子代在模态主体中呈现,因此未找到任何子代,因为该元素未进行beign安装。

以上是关于酶:测试孩子通过安装渲染失败,但通过浅时通过的主要内容,如果未能解决你的问题,请参考以下文章

渲染管道像素阶段“深度测试”

渲染管道像素阶段“深度测试”

开玩笑 - 如何测试组件是不是不存在?

运行所有测试时单元测试失败,但调试时通过

R 包开发:测试通过控制台,但通过 devtools::test() 失败

使用酶在反应测试中查找渲染子组件的数量?