我正在尝试为测试目的存根React组件方法:
var Comp = React.createClass({
displayName: "Comp",
plop: function() {
console.log("plop");
},
render: function() {
this.plop();
return React.DOM.div(null, "foo");
}
});
var stub = sinon.stub(Comp.type.prototype, "plop");
React.addons.TestUtils.renderIntoDocument(Comp());
sinon.assert.called(stub); // throws
可悲的是,这一直在控制台上打印“扑通”……并且断言失败了。
注意:直接存根 spec 对象方法是可行的,但是您必须分别导出组件构造函数和规范,以便它们都在测试中可用……此外,您甚至需要在创建组件类之前存根规范;不太方便:
var CompSpec = {
displayName: "Comp",
plop: function() {
console.log("plop");
},
render: function() {
this.plop();
return React.DOM.div("foo");
}
};
var stub = sinon.stub(CompSpec, "plop");
var Comp = React.createClass(CompSpec);
React.addons.TestUtils.renderIntoDocument(Comp());
// plop() is properly stubbed, so you can
sinon.assert.called(stub); // pass
你能想到另一种轻松地存根 React 组件方法的策略吗?