我正在测试一个React组件,我在其中使用了react-router' s isActive
。要做到这一点,我试图将isActive
保留为真,但无效。
测试结果:
1) MyComponent Component "before all" hook for "should render ":
TypeError: Cannot read property 'isActive' of undefined
at [object Object].State.(anonymous function) (node_modules/react-router/lib/State.js:46:18)
at [object Object].renderContent (src/components/MyComponent.jsx:48:19)
at [object Object].render (src/components/MyComponent.jsx:40:31)
at [object Object].ReactCompositeComponentMixin._renderValidatedComponentWithoutOwnerOrContext (node_modules/react/lib/ReactCompositeComponent.js:789:34)
at [object Object].ReactCompositeComponentMixin._renderValidatedComponent (node_modules/react/lib/ReactCompositeComponent.js:816:14)
at [object Object].wrapper [as _renderValidatedComponent] (node_modules/react/lib/ReactPerf.js:70:21)
at [object Object].ReactCompositeComponentMixin.mountComponent (node_modules/react/lib/ReactCompositeComponent.js:237:30)
at [object Object].wrapper [as mountComponent] (node_modules/react/lib/ReactPerf.js:70:21)
at Object.ReactReconciler.mountComponent (node_modules/react/lib/ReactReconciler.js:38:35)
at mountComponentIntoNode (node_modules/react/lib/ReactMount.js:248:32)
at ReactReconcileTransaction.Mixin.perform (node_modules/react/lib/Transaction.js:134:20)
at batchedMountComponentIntoNode (node_modules/react/lib/ReactMount.js:269:15)
at ReactDefaultBatchingStrategyTransaction.Mixin.perform (node_modules/react/lib/Transaction.js:134:20)
at Object.ReactDefaultBatchingStrategy.batchedUpdates (node_modules/react/lib/ReactDefaultBatchingStrategy.js:66:19)
at Object.batchedUpdates (node_modules/react/lib/ReactUpdates.js:110:20)
at Object.ReactMount._renderNewRootComponent (node_modules/react/lib/ReactMount.js:404:18)
at Object.wrapper [as _renderNewRootComponent] (node_modules/react/lib/ReactPerf.js:70:21)
at Object.ReactMount.render (node_modules/react/lib/ReactMount.js:493:32)
at Object.wrapper [as render] (node_modules/react/lib/ReactPerf.js:70:21)
at Object.ReactTestUtils.renderIntoDocument (node_modules/react/lib/ReactTestUtils.js:52:18)
at Context.<anonymous> (tests/components/MyComponent.spec.js:36:37)
组件:
'use strict';
var MyComponent = require('MyComponent.jsx'),
React = require('react/addons'),
ReactTestUtils = React.addons.TestUtils,
sinon = require('sinon'),
expect = require('chai').expect;
describe('Test Component', function() {
before(function () {
sinon.stub(MyComponent.prototype,'isActive').returns(true);
this.component = ReactTestUtils.renderIntoDocument(
<MyComponent />
);
});
it('should render MyComponent component', function(){
expect(this.component).toBeDefined();
});
});