title: Checkbox is not `checked` after simulate `change` with enzyme
body: <p>I tried to use enzyme to simulate <code>change</code> event on a checkbox, and use <code>chai-enzyme</code> to assert if it's been checked.</p>
  
  <p>This is my <code>Hello</code> react component:</p>
  
  <pre><code>import React from 'react';
  
  class Hello extends React.Component {
    constructor(props) {
      super(props);
      this.state = {
        checked: false
      }
    }
  
    render() {
      const {checked} = this.state;
      return &lt;div&gt;
        &lt;input type="checkbox" defaultChecked={checked} onChange={this._toggle.bind(this)}/&gt;
        {
          checked ? "checked" : "not checked"
        }
      &lt;/div&gt;
    }
  
    _toggle() {
      const {onToggle} = this.props;
      this.setState({checked: !this.state.checked});
      onToggle();
    }
  }
  
  export default Hello;
  </code></pre>
  
  <p>And my test:</p>
  
  <pre><code>import React from "react";
  import Hello from "../src/hello.jsx";
  import chai from "chai";
  import {mount} from "enzyme";
  import chaiEnzyme from "chai-enzyme";
  import jsdomGlobal from "jsdom-global";
  import spies  from 'chai-spies';
  
  function myAwesomeDebug(wrapper) {
    let html = wrapper.html();
    console.log(html);
    return html
  }
  
  jsdomGlobal();
  chai.should();
  chai.use(spies);
  chai.use(chaiEnzyme(myAwesomeDebug));
  
  
  describe('&lt;Hello /&gt;', () =&gt; {
  
    it('checks the checkbox', () =&gt; {
      const onToggle = chai.spy();
      const wrapper = mount(&lt;Hello onToggle={onToggle}/&gt;);
  
      var checkbox = wrapper.find('input');
      checkbox.should.not.be.checked();
      checkbox.simulate('change', {target: {checked: true}});
      onToggle.should.have.been.called.once();
  
      console.log(checkbox.get(0).checked);
      checkbox.should.be.checked();
    });
  
  });
  </code></pre>
  
  <p>When I run this test, the <code>checkbox.get(0).checked</code> is <code>false</code>, and the assertion <code>checkbox.should.be.checked()</code> reports error:</p>
  
  <pre><code>AssertionError: expected the node in &lt;Hello /&gt; to be checked &lt;input type="checkbox" checked="checked"&gt;
  </code></pre>
  
  <p>You can see the message is quite strange since there is already <code>checked="checked"</code> in the output.</p>
  
  <p>I'm not sure where is wrong, since it involves too many things.</p>
  
  <p>You can also see a demo project here: <a href="https://github.com/js-demos/react-enzyme-simulate-checkbox-events-demo" rel="noreferrer">https://github.com/js-demos/react-enzyme-simulate-checkbox-events-demo</a>, notice <a href="https://github.com/js-demos/react-enzyme-simulate-checkbox-events-demo/blob/master/spec/hello-spec.js#L39-L46" rel="noreferrer">these lines</a></p>