我终于将我的组件从React.createClass()更新为ES6类.我在测试中看到的第一个错误是我的一些sinon.stub()调用失败,因为jscodeshift -t react-codemod / transforms / class.js转换了我的组件方法以使用属性初
class Foo extends React.Component { componentWillMount() { this.fetchSomeData(this.props); } componentWillReceiveProps(nextProps) { if (nextProps.someProp !== this.props.someProp) { this.fetchSomeData(nextProps); } } fetchSomeData = (props) => { ... }; render() { ... } }
我的问题是:如何使用这种新语法存根fetchSomeData()?我的测试看起来像sinon.stub(Foo.prototype,’fetchSomeData’);因为fetchSomeData不再出现在原型上,所以它不再有效.
谢谢!
在这个例子中,fetchSomeData()确实附加到此而不是Foo.prototype,因此在创建实例之前绝对没有办法存根该方法.解决方法是将fetchSomeData()中的逻辑移动到可以存根的不同位置.或者使用不同的语法来定义方法.