J'ai une si elle est conditionnelle qui ressemble à ceci:Comment accéder à l'objet de l'histoire dans Jest
if (history.state !== null && history.state.query)
Le problème est que si cela ne fonctionne pas en plaisantant, comme history
est un objet vide dans mes tests .
Que faut-il faire dans mes tests pour utiliser l'objet history
? Je cours cela en utilisant React sur un serveur Node.js. Je ne sais pas si cela compte, mais j'utilise aussi React Router.
Cas de test:
beforeEach(() => {
window.ga = jest.fn();
window.analytics = jest.fn();
window.analytics.track = jest.fn();
});
it('should set up props from history state',() => {
let location = {
pathname: '/explore',
query: {
query: 'yahoo',
},
};
global.history = { state: { query: 'google'} };
const wrapper = mount(
<LandingPage location={location} />
);
console.log("global.history.state: " + global.history.state); // prints null
});
Une partie du composant (ne peut pas mettre tout le composant):
if (props.location && props.location.pathname === '/explore') {
explorePath = true;
skipIntro = true;
explore = true;
/* checks if history.state is not equal to null
* if check passes, search query and results will appear
*/
if (history.state !== null && history.state.query) {
currentValue = history.state.query;
employeeMin = history.state.eMin;
employeeMax = history.state.eMax;
revenueMin = history.state.rMin;
revenueMax = history.state.rMax;
}
} else {
explore = skipIntro;
}
Quelle version du routeur de réaction utilisez-vous? Récupérez-vous l'historique des accessoires de votre composant? – hinok
Eh bien, vous pouvez simuler 'history' en ajoutant' state.query' à l'objet vide? –
@hinok J'utilise le 'history' global de' window'. Je crois que la version est '3.0.2'. – RaDeuX