El contenido de los cuadros de diálogo modales de React no está disponible para las pruebas de enzimas que utilizan mount ()
Tengo un componente Reaccionar con un diálogo modal (creado usandoreactstrap
, pero otros han reportado problemas similares conreact-bootstrap
y otros tipos de componentes modales). Enzyme no puede encontrar ninguno de los componentes dentro del modal, a pesar de que funcionan bien en la aplicación real. Ejemplo mínimo:
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>
);
}
}
Me gustaría probar el contenido (en este caso usandojest
) Me gusta esto
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);
});
La prueba encuentra los contenidos fuera del Modal correctamente, pero no encuentra nada dentro. Mirar la instantánea muestra que, de hecho, nada dentro del<Modal>
se rinde. Sin embargo, funciona si reemplazomount
conshallow
. El problema con eso es que necesitomount
para probar métodos de ciclo de vida comocomponentDidMount
.
Por qué nomount
renderizar los contenidos del modal? Pensé que el punto era que representaba todo el árbol de elementos secundarios.