Ich aktualisiere schließlich meine Komponenten von React.createClass()
zu ES6-Klassen. Der erste Fehler, den ich in meinen Tests bin zu sehen ist, dass einige meiner sinon.stub()
Anrufe werden scheitern, weil jscodeshift -t react-codemod/transforms/class.js
meine Komponentenmethoden umgewandelt, um die Eigenschaft initializer Vorschlag zu verwenden, dhReact - wie stoße ich Komponentenmethoden ab, die die Property Initializersyntax verwenden?
class Foo extends React.Component {
componentWillMount() {
this.fetchSomeData(this.props);
}
componentWillReceiveProps(nextProps) {
if (nextProps.someProp !== this.props.someProp) {
this.fetchSomeData(nextProps);
}
}
fetchSomeData = (props) => {
...
};
render() {
...
}
}
Meine Frage ist: Wie kann ich Stummel fetchSomeData()
mit diese neue Syntax? Meine Tests sehen wie sinon.stub(Foo.prototype, 'fetchSomeData');
aus, was nicht mehr funktioniert, vorausgesetzt, dass fetchSomeData
nicht mehr auf dem Prototyp ist.
Danke!
ES7 wurde veröffentlicht * letztes Jahr * (2016). Eigenschaftsinitialisierungen sind ein * Vorschlag *. –
Hat Ihr Test Zugriff auf die Instanz der Komponente? Wenn dies der Fall ist, können Sie sinon.stub (componentInstance, 'fetchSomeData') und dann componentInstance.render(); – jeznag
@jeznag guten Punkt, danke. Daran habe ich nicht gedacht. Aber ich lasse das Enzym den Render-Lebenszyklus handhaben, und ich glaube nicht, dass das eine gute Lösung für mich wäre. – mulleady1