Ref: https://github.com/facebook/react/issues/631#issuecomment-214909216

It's a little surprising that the codepath is even being hit, maybe that's a bug too, but there should clearly be some sort of `if` check in that area.

ReactDOM.render(<div value={value} />, container);
        expect(nodeValueSetter.mock.calls.length).toBe(expected);
      }
      renderWithValueAndExpect(undefined, 0);
      renderWithValueAndExpect('', 0);
      renderWithValueAndExpect('foo', 1);
      renderWithValueAndExpect('foo', 1);
      renderWithValueAndExpect(undefined, 2);
      renderWithValueAndExpect(null, 2);
      renderWithValueAndExpect('', 2);
      renderWithValueAndExpect(undefined, 2);
    });
    it('should not incur unnecessary DOM mutations for boolean properties', function() {
      var container = document.createElement('div');
      ReactDOM.render(<div checked={true} />, container);
      var node = container.firstChild;
      var nodeValue = true;
      var nodeValueSetter = jest.fn();
      Object.defineProperty(node, 'checked', {
        get: function() {
          return nodeValue;
        },
        set: nodeValueSetter.mockImplementation(function(newValue) {
          nodeValue = newValue;
        }),
      });
      ReactDOM.render(<div checked={true} />, container);