我有一个带有模态对话框的 React 组件(使用 构建reactstrap,但其他人报告了react-bootstrap与其他类型的模态组件类似的问题)。Enzyme 无法在模态中找到任何组件,即使它们在实际应用程序中呈现良好。最小的例子:
import React from 'react'
import { Modal } from 'reactstrap'
export default class MyModal extends React.Component {
    render() {
        return (
            <div className="outside"> Some elements outside of the dialog </div>
            <Modal isOpen={this.props.modalOpen}>
                <div className="inside"> Content of dialog </div>
            </Modal>
         );
    } 
}
我想像这样测试内容(在这种情况下使用jest)
import React from 'react'
import MyModal  from './MyModal'
import { mount } from 'enzyme'
it('renders correctly', () => {
    const wrapper = mount( <MyModal modalOpen/> );
    expect(wrapper).toMatchSnapshot();
    // Passes
    expect(wrapper.find('.outside')).toHaveLength(1);
    // Fails, 0 length
    expect(wrapper.find('.inside')).toHaveLength(1);
});
测试正确地找到了 Modal 之外的内容,但没有找到里面的任何内容。查看快照表明,实际上,里面没有任何东西<Modal>被渲染。但是,如果我替换mount为shallow. 问题是我需要mount测试生命周期方法,如componentDidMount.
为什么不mount呈现模态的内容?我认为重点是它渲染了整个子元素树。