function assertChanges (object, prop, msg) {
    if (msg) flag(this, 'message', msg);
    var fn = flag(this, 'object');
    new Assertion(object, msg).to.have.property(prop);
    new Assertion(fn).is.a('function');

    var initial = object[prop];
    fn();

    this.assert(
      initial !== object[prop]
      , 'expected .' + prop + ' to change'
      , 'expected .' + prop + ' to not change'
    );
  }
### .change(function)

Asserts that a function changes an object property

    var obj = { val: 10 };
    var fn = function() { obj.val += 3 };
    var noChangeFn = function() { return 'foo' + 'bar'; }
    expect(fn).to.change(obj, 'val');
    expect(noChangFn).to.not.change(obj, 'val')

@name change
@alias changes
@alias Change
@param {String} object
@param {String} property name
@param {String} message _optional_
@api public