title: After Simulate('change') state is not updated
body: <p>I've got a search filter component with an input inside it, and it's connected to redux.</p>
  
  <pre><code>class SearchFilter extends PureComponent {
     constructor (props) {
         super(props);
         this.handleInputChange = this.handleInputChange.bind(this);
         this.state = {
             keyword: props.searchKeyword
         };
     }
  
     handleInputChange (e) {
         this.setState({keyword: e.target.value});
         this.props.dispatch(SetFiltersValue(...);
     }
  
     render () {
         const {keyword} = this.state;
         return (
             &lt;div className="search-w bp3-input-group"&gt;
                 &lt;span className="bp3-icon bp3-icon-search"/&gt;
                 &lt;input className="bp3-input" value={keyword} type="text" placeholder="Search input" dir="auto" onChange={this.handleInputChange} /&gt;
             &lt;/div&gt;
         );
     }
  }
  
  const mapStateToProps = (_, ownParams) =&gt; {...};
  export default connect(mapStateToProps)(SearchFilter);
  </code></pre>
  
  <p>I wrote a test in jest and enzyme to test state updates when user enters a new value</p>
  
  <pre><code>import React from "react";
  import SearchFilter from "../../dev/components/shared/searchFilter";
  import {shallow, mount} from "enzyme";
  import configureStore from "redux-mock-store";
  
  describe("Testing Search filter", () =&gt; {
      const mockStore = configureStore(),
          initialStoreState = {
              filtersParams: {}
          };
      let store;
  
      beforeEach(() =&gt; {
          store = mockStore(initialStoreState);
      });
  
      it("Update search field value when user enters a value", () =&gt; {
          const wrapper = shallow(&lt;SearchFilter store={store}/&gt;).dive(),
              searchInput = wrapper.find("input.bp3-input").first();
  
          expect(searchInput).toBeDefined();
  
          const mockedEvent = {
              preventDefault () {},
              target: { value: "foo" }
          };
          expect(wrapper.state("keyword")).toEqual("");
          searchInput.simulate("change", mockedEvent);
          wrapper.update();
          expect(wrapper.state("keyword")).toEqual("foo");
      });
  });
  </code></pre>
  
  <p>The problem is that state does't update after simulating change, and test always fails.</p>
  
  <p>How can I fix this or is there other way to test state updates?</p>