Ich versuche, React-Komponente zu testen, die Browserhistory von React-Router verwendet. Um zu gewährleisten, Zugang zu browserHistory Ich verwende createMemoryHistory (reagieren-Router-Modul) wie folgt aus:Wie man BrowserHistory in der Einheittestumgebung vortäuscht?
let createMemoryHistory = require('react-router/lib/createMemoryHistory');
Im Test env I Vorteil JSDOM Bibliothek nehme.
Dann versuche ich, erstellt Geschichte Objekt DOM zuzuordnen:
let history = createMemoryHistory();
global.history = history;
Während Rendering-Komponente in der Testumgebung, ich folgende Störung zu erhalten:
Invariant Violation: Browser history needs a DOM
Jede Idee Wie man es überwinden kann?
Sie müssen ein Mock-History-Objekt implementieren und dieses stattdessen verwenden –
Weitere Anweisungen oder Codebeispiele? – magos
Sie können sinon/spies verwenden, um die von Ihnen verwendeten Methoden nachzuahmen. Siehe http://sinonjs.org/ –