2016-12-06 3 views
0

Ich habe eine verbunden reagieren Komponente (mit react-redux):Mocking Versand in reagieren Komponente

doSomething() { 
    dispatch(something()) 
} 

render() { 
    return (
    <p onClick={doSomething}>{this.props.someText}</p> 
) 
} 

Stellen Sie sich vor, dass das Ergebnis in der something Aktion Schöpfer in den p Tag Ergebnisse klicken aufgerufen wird, die dann aktualisiert die someText Wert Stütze.

Ich muss in der Lage sein zu testen, dass das Klicken auf das P-Tag in der Tat einen Versand verursacht und wiederum, dass someText aktualisiert wird.

Wie kann ich dispatch ausspionieren, damit ich es nachahmen kann, wie es verursacht, die someText Stütze aktualisiert zu werden?

+0

Was verwenden Sie zum Testen? – vblazenka

+0

Enzym, Mokka, Chai –

+0

Ich bin mir nicht sicher, ob es hilft, aber scrollen Sie nach unten zu ** Komponenten ** Abschnitt. https://github.com/reactjs/redux/blob/master/docs/recipes/WritingTests.md Und ich würde vorschlagen, dass Sie bindActionCreators für die Zuordnung von actionCreators zu Ihren Requisiten verwenden, so dass Sie nicht manuell müssen Aufruf von Versand in Ihrer Komponente. – vblazenka

Antwort

0

haben Sie versucht, sinon zusammen mit Ihrer Testsuite (Mokka, Chai und Enzym) zu verwenden.

können Sie versuchen, die Funktion zu verspotten, um etwas Text zurückzugeben. Hoffe, das wird helfen

sinon.stub(Component.prototype, 'doSomething', function(){ 
    return 'someText'; 
}); 
+0

Ich benutze bereits Sinon, um zu bestätigen, dass der Versand mit den richtigen Argumenten aufgerufen wird. Ich vermute, ich hatte gehofft, dass es einen akzeptierten Weg gab, den Versand zu verspotten, so dass er Requisiten basierend auf dem Versand aktualisierte. Ich habe mich dafür entschieden, stattdessen die Methode 'component.setProps' von Enzymen zu verwenden, um zu bestätigen, dass meine Komponenten bei der Aktualisierung von Props wie erwartet aktualisiert werden. –

Verwandte Themen