diff --git a/src/ReactShallowRenderer.js b/src/ReactShallowRenderer.js index 956005d..fc3baf2 100644 --- a/src/ReactShallowRenderer.js +++ b/src/ReactShallowRenderer.js @@ -147,9 +147,11 @@ class ReactShallowRenderer { // Fallback to previous instance state to support rendering React.cloneElement() const state = this._newState || this._instance.state || emptyObject; - if (typeof this._instance.shouldComponentUpdate === 'function') { + if ( + typeof this._instance.shouldComponentUpdate === 'function' && + !this._forcedUpdate + ) { if ( - this._forcedUpdate || this._instance.shouldComponentUpdate(props, state, context) === false ) { this._instance.context = context; diff --git a/src/__tests__/ReactShallowRenderer-test.js b/src/__tests__/ReactShallowRenderer-test.js index 55647fb..1f51e39 100644 --- a/src/__tests__/ReactShallowRenderer-test.js +++ b/src/__tests__/ReactShallowRenderer-test.js @@ -142,6 +142,24 @@ describe('ReactShallowRenderer', () => { expect(scuCounter).toEqual(0); }); + it('should rerender when calling forceUpdate', () => { + let renderCounter = 0; + class SimpleComponent extends React.Component { + render() { + renderCounter += 1; + return
; + } + } + + const shallowRenderer = createRenderer(); + shallowRenderer.render(