Estoy tratando de probar el componenteWillRecieveProps de un componente conectado. Dado que no puedo renderizar superficialmente el componente, ya que debe envolverse en un proveedor, estoy actualizando los accesorios mediante el método setProps del componente secundario.
setProps() generalmente llamará a los métodos del ciclo de vida del componente, pero dado que la prueba aquí es en el componente secundario, setProps() no vuelve a representar el envoltorio y, por lo tanto, no puedo probar el componenteWillRecieveProps con nuevos Props.
¿Alguna sugerencia para probar los métodos del ciclo de vida de los componentes conectados?
test('calls componentWillReceiveProps', () => { const willReceiveProps = jest.fn(); const props = { title: "Order", history, ordersStatus: true, status: 'loaded', dispatch: jest.fn() } const newProps = { ...props, status: 'failed' } wrapper = mount(<Provider store={store}><MyComponent {...props} /></Provider>) wrapper.setProps({ children: <MyComponent {...newProps} /> }); // New props are updated from above, expect componentWillReceiveProps to be called here OrderpickupDashboard.prototype.componentWillReceiveProps = willReceiveProps; wrapper.update(); expect(willReceiveProps).toBeTruthy(); // expect(willReceiveProps).toBeCalled(); // This statement isn't working as the lifecycle method isn't called, how can we make the test call componentWillReceiveProps });Creo que puede exportar "MyComponent" no conectado con fines de prueba. De esta manera, puede simular cambios de accesorios y verificar fácilmente la salida de su renderizado.
Por ejemplo,
MiComponente.jsx
export class MyComponentComp extends React.Component<Props, State> { // use this for testing } export default connect(mapStateToProps, dispatchToProps)(MyComponentComp)"componentWillReceiveProps" está en desuso, puede intentar actualizarlo también.