code: function () {
      this._calls = []; // names/args of recorded calls
      this._initMethods();
  
      this._fillStyle = null;
      this._lineCap = null;
      this._lineDashOffset = null;
      this._lineJoin = null;
      this._lineWidth = null;
      this._strokeStyle = null;
  
      // Define properties here so that we can record each time they are set
      Object.defineProperties(this, {
          "fillStyle": {
              'get': function () {
                  return this._fillStyle;
              },
              'set': function (style) {
                  this._fillStyle = style;
                  this.record('setFillStyle', [style]);
              }
          },
          'lineCap': {
              'get': function () {
                  return this._lineCap;
              },
              'set': function (cap) {
                  this._lineCap = cap;
                  this.record('setLineCap', [cap]);
              }
          },
          'lineDashOffset': {
              'get': function () {
                  return this._lineDashOffset;
              },
              'set': function (offset) {
                  this._lineDashOffset = offset;
                  this.record('setLineDashOffset', [offset]);
              }
          },
          'lineJoin': {
              'get': function () {
                  return this._lineJoin;
              },
              'set': function (join) {
                  this._lineJoin = join;
                  this.record('setLineJoin', [join]);
              }
          },
          'lineWidth': {
              'get': function () {
                  return this._lineWidth;
              },
              'set': function (width) {
                  this._lineWidth = width;
                  this.record('setLineWidth', [width]);
              }
          },
          'strokeStyle': {
              'get': function () {
                  return this._strokeStyle;
              },
              'set': function (style) {
                  this._strokeStyle = style;
                  this.record('setStrokeStyle', [style]);
              }
          },
      });
  }
docs: Code from http://stackoverflow.com/questions/4406864/html-canvas-unit-testing