diff --git a/package.json b/package.json index d208a2f9d..e2e91d181 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "license": "MIT", "dependencies": { "cheerio": "^0.19.0", + "object.assign": "^4.0.3", "sinon": "^1.15.4", "underscore": "^1.8.3" }, diff --git a/src/ReactWrapperComponent.jsx b/src/ReactWrapperComponent.jsx index 57018316e..698477a72 100644 --- a/src/ReactWrapperComponent.jsx +++ b/src/ReactWrapperComponent.jsx @@ -1,4 +1,5 @@ import React, { PropTypes } from 'react'; +import objectAssign from 'object.assign'; /** * This is a utility component to wrap around the nodes we are @@ -30,7 +31,8 @@ export default function createWrapperComponent(node, options = {}) { }; }, - setChildProps(props) { + setChildProps(newProps) { + const props = objectAssign({}, this.state.props, newProps); return new Promise(resolve => this.setState({ props }, resolve)); }, diff --git a/src/__tests__/ReactWrapper-spec.js b/src/__tests__/ReactWrapper-spec.js index 40dff38c7..6f6774fac 100644 --- a/src/__tests__/ReactWrapper-spec.js +++ b/src/__tests__/ReactWrapper-spec.js @@ -259,6 +259,25 @@ describeWithDOM('mount', () => { expect(spy.calledWith(nextProps)).to.equal(true); }); + it('should merge newProps with oldProps', () => { + class Foo extends React.Component { + render() { + return ( +
+ ); + } + } + + const wrapper = mount(