pakmanaged.js
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'
        );
      }
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