Sto provando a testare un componente React che richiede il react-router separatamente da app.js.Avviso di Reazione: Tipi di contesto non riusciti: contesto obbligatorio `router` non specificato in` Componente`
Ho un componente che fa un redirect utilizzando il Router.Navigation mixin in questo modo:
var React = require('react'),
Router = require('react-router');
var Searchbar = React.createClass({
mixins : [Router.Navigation],
searchTerm: function(e) {
if (e.keyCode !== 13) {
return;
}
this.context.router.transitionTo('/someRoute/search?term=' + e.currentTarget.value)
},
render: function() {
return (
<div className="searchbar-container">
<input type="search" placeholder="Search..." onKeyDown={this.searchTerm} />
</div>
)
}
});
module.exports = Searchbar;
ho cercato di scrivere un test per questo, ma ha incontrato un muro. A parte il fatto che io sono in grado di testare che transitionTo funziona come previsto, ho anche incontrato questo messaggio di errore nel mio test Jest:
Avviso: impossibile tipi di contesto: contesto Richiesto router
non è stato specificato in Searchbar
.
Qualcuno sa come posso eliminare l'avviso e la domanda bonus, come posso verificare che la transizione funzioni come previsto?
Ho fatto ricerche su questa e su questa conversazione su Github qui: https://github.com/rackt/react-router/issues/400 è il più vicino che ho trovato sul problema. Sembra che ho bisogno di esportare il router separatamente, ma sembra un sacco di spese generali per eseguire solo test dei componenti senza l'avviso a la https://github.com/rackt/react-router/blob/master/docs/guides/testing.md
È davvero la strada da percorrere?
Hai trovato una soluzione per questo? – Tom
Nessuno, che sono riuscito a lavorare, ma ci sto ancora lavorando. Non è ultra urgente in quanto sono solo messaggi di avvertimento, ma sono fastidiosi. Lo otterrò comunque. – alengel
Ciao @ Tom Ho finalmente trovato una soluzione perché l'ultimo paragrafo di BinaryMuse mi ha portato sulla giusta strada. Ho postato la mia risposta con il codice. – alengel