kmock javascript 单元测试代码

复制代码 代码如下:

  (function () {

  var KMock = window.KMock = function () {

  }

  KMock.prototype.setup = function (methodName) {

  var instance = this;

  instance[methodName] = {

  returnAs: function (fn) {

  instance["_" + methodName] = function () {

  instance[methodName].invokeNum++;

  fn.call();

  }

  },

  isVerify: function (exceptNum) {

  if (exceptNum != null) {

  return exceptNum == instance[methodName].invokeNum;

  }

  else {

  return instance[methodName].invokeNum > 0;

  }

  },

  invoke: function () {

  instance["_" + methodName].call();

  },

  invokeNum: 0

  };

  return instance[methodName];

  }

  })();

  //自己写了个mock类,暂时是用来模拟函数,然后判断函数的调用次数,以下是用法

  <BR><DIV class=cnblogs_Highlighter><PRE class=brush:javascript>/// <reference path="Flight.js" />

  /// <reference path="http://demo.glzy8.com/jslib/qunit/qunit.js" />

  /// <reference path="KMock.js" />

  module("enter coin");

  test("enter coin while game has not yet start", function () {

  var flight = new KFlight();

  var mock = new KMock();

  mock.setup("draw").returnAs(function () {

  });

  flight.draw = mock.draw.invoke;

  equal(flight.coinNum, 0);

  equal(flight.gameState, 0);

  flight.coinEnter();

  equal(flight.coinNum, 0);

  equal(flight.gameState, 1);

  equal(mock.draw.isVerify(1), true);

  });