Opzione 1) È possibile avvolgere il componente contenitore con il componente Provider di React-Redux nel test. Pertanto, con questo approccio, si fa effettivamente riferimento al negozio, lo si passa al provider e si compone il componente in prova all'interno. Il vantaggio di questo approccio è che puoi effettivamente creare un negozio personalizzato per il test. Questo approccio è utile se si desidera testare le porzioni correlate al Redux del componente. Opzione 2) Forse non ti interessa testare i pezzi relativi a Redux. Se sei semplicemente interessato a testare il rendering del componente e i comportamenti relativi allo stato locale, puoi semplicemente aggiungere un'esportazione nominata per la versione normale non connessa del tuo componente. E giusto per chiarire quando aggiungi la parola chiave "export" alla tua classe in pratica stai dicendo che ora la classe potrebbe essere importata in 2 modi con parentesi graffe {} oppure no. Esempio:
export class MyComponent extends React.Component{ render(){ ... }}
...
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent)
in seguito sul file di test:
import MyComponent from 'your-path/MyComponent'; // it needs a store because you use "default export" with connect
import {MyComponent} from 'your-path/MyComponent'; // don't need store because you use "export" on top of your class.
spero aiuta qualcuno là fuori.
Vedo che stai usando mount, se provo a sostituire '' mount'' con '' shallo'', ricevo un errore. hai incontrato anche questo? – Mehrdad
Sebbene questa risposta funzioni in alcuni casi, non funziona quando è necessario testare il ciclo di vita del componente. Ad esempio, chiamando 'wrapper.setProps()' non attiverà 'componentWillReceiveProps()' su 'SampleComponent'. –