自訂執行

如果您想要自訂您的 jasmine 環境,您可以自訂您的 boot.js 檔案。

boot.js 的核心應該保持相同,但是您可以透過變更這個檔案新增新項目至介面,或是設定項目。

(function() {

  window.jasmine = jasmineRequire.core(jasmineRequire);

  jasmineRequire.html(jasmine);

  var env = jasmine.getEnv();

自訂介面

當核心 jasmine 介面載入完後,您可以新增新函式或是覆寫現有函式。

  var jasmineInterface = jasmineRequire.interface(jasmine, env);

在此,我們加入一些別名,所以beforebeforeEach 相同

  jasmineInterface.before = jasmineInterface.beforeEach;

afterafterEach 相同

  jasmineInterface.after = jasmineInterface.afterEach;

contextdescribe 相同

  jasmineInterface.context = jasmineInterface.describe;

  if (typeof window == "undefined" && typeof exports == "object") {
    extend(exports, jasmineInterface);
  } else {
    extend(window, jasmineInterface);
  }

新增自訂報告產生器

您也可以加入您自己的報告產生器,可以是新增至或取代 jsApiReporterhtmlReporter

  env.addReporter(jasmineInterface.jsApiReporter);

您也可以透過變更 env.specFilter 函式,來自訂從目前批次篩選規格的方式

或者,也可以在剖析測試後,將要執行規格指定為一陣列的套件或規格 ID,傳遞給執行函式。這些 ID 可以藉由遍歷可存取自 env.topSuite() 的剖析測試樹狀結構而得到。

  var specFilter = new jasmine.HtmlSpecFilter({
    filterString: function() { return queryString.getParam("spec"); }
  });

  env.specFilter = function(spec) {
    return specFilter.matches(spec.getFullName());
  };

  window.setTimeout = window.setTimeout;
  window.setInterval = window.setInterval;
  window.clearTimeout = window.clearTimeout;
  window.clearInterval = window.clearInterval;

預設情況下,Jasmine 會在瀏覽器觸發 onload 事件時開始執行。如果您希望在呼叫 execute 之前等待其他事件,請替換此部分

  var currentWindowOnload = window.onload;

  window.onload = function() {
    if (currentWindowOnload) {
      currentWindowOnload();
    }
    env.execute(env.topSuite().id);
  };

輔助函式,將 Jasmine 公開介面加入至正確物件。

  function extend(destination, source) {
    for (var property in source) destination[property] = source[property];
    return destination;
  }

}());