公開 API

大多數情況下,您將直接從命令列使用 Karma。但是,您可以從您的節點模組以程式設計方式呼叫 Karma。以下是公開 API。

karma.Server(options, [callback=process.exit]) #

建構函式 #

  • 返回: Server 實例。

用法 #

請注意 require('karma').Server 上的 'S' 為大寫。

已棄用的行為 #

以下程式碼仍然有效,但其行為已被棄用,並將在未來的主要版本中更改。

var Server = require('karma').Server
var karmaConfig = {port: 9876}
var server = new Server(karmaConfig, function(exitCode) {
  console.log('Karma has exited with ' + exitCode)
  process.exit(exitCode)
})
新行為 #
const karma = require('karma')
const parseConfig = karma.config.parseConfig
const Server = karma.Server

parseConfig(
  null,
  { port: 9876 },
  { promiseConfig: true, throwErrors: true }
).then(
  (karmaConfig) => {
    const server = new Server(karmaConfig, function doneCallback(exitCode) {
      console.log('Karma has exited with ' + exitCode)
      process.exit(exitCode)
    })
  },
  (rejectReason) => { /* respond to the rejection reason error */ }
);

server.start() #

相當於 karma start

server.start()

server.refreshFiles() #

觸發檔案列表重新整理。返回一個 Promise。

server.refreshFiles()

server.refreshFile(path) #

觸發檔案重新整理。返回一個 Promise。

server.refreshFile('src/js/module-dep.js')

事件 #

server 物件是一個 EventEmitter。您可以像這樣簡單地監聽事件

server.on('browser_register', function (browser) {
  console.log('A new browser was registered')
})

listening #

參數

  • port:通訊埠號

開始在指定的通訊埠上接受連線。

browser_register #

參數

  • browser:瀏覽器實例

已開啟新的瀏覽器,但尚未準備好。

browser_error #

參數

  • browser:瀏覽器實例
  • error:發生的錯誤

此瀏覽器實例中發生錯誤。

browser_start #

參數

  • browser:瀏覽器實例
  • info:關於執行的詳細資訊

測試執行在此瀏覽器中開始。

browser_complete #

參數

  • browser:瀏覽器實例
  • result:測試結果

測試執行在此瀏覽器中完成。

browsers_change #

參數

  • browsers:瀏覽器實例的集合

瀏覽器列表已更改。

browsers_ready #

所有瀏覽器都已準備好執行

run_start #

參數

  • browsers:執行測試的瀏覽器實例集合

測試執行開始。

run_complete #

參數

  • browsers:瀏覽器實例的集合
  • results:結果列表

每當屬於測試執行的所有瀏覽器都完成時,就會觸發此事件。例如,在具有 3 個瀏覽器的執行中,預計在 run_complete 事件之前會有 3 個 browser_complete 事件。

karma.runner #

runner.run(options, [callback=process.exit]) #

  • 返回: EventEmitter

相當於 karma run

用法 #

已棄用的行為 #

以下程式碼仍然有效,但其行為已被棄用,並將在未來的主要版本中更改。

var runner = require('karma').runner
runner.run({port: 9876}, function(exitCode) {
  console.log('Karma has exited with ' + exitCode)
  process.exit(exitCode)
})
新行為 #
const karma = require('karma')

karma.config.parseConfig(
  null,
  { port: 9876 },
  { promiseConfig: true, throwErrors: true }
).then(
  (karmaConfig) => {
    karma.runner.run(karmaConfig, function doneCallback(exitCode, possibleErrorCode) {
      console.log('Karma has exited with ' + exitCode)
      process.exit(exitCode)
    })
  },
  (rejectReason) => { /* respond to the rejection reason error */ }
);

callback 參數 #

回調函數接收退出代碼作為第一個參數。

如果發生錯誤,錯誤代碼將作為錯誤回調函數的第二個參數提供。

runner 事件 #

runner.run() 返回一個 EventEmitter,它發出一個 progress 事件,將報告器輸出作為 Buffer 物件傳遞。

您可以監聽該事件以將報告器輸出列印到控制台

runner.run({port: 9876}).on('progress', function(data) {
  process.stdout.write(data)
})

karma.stopper #

stopper.stop(options, [callback=process.exit]) #

此函數將發送信號給正在運行的伺服器以停止。相當於 karma stop

用法 #

已棄用的行為 #

以下程式碼仍然有效,但其行為已被棄用,並將在未來的主要版本中更改。

var stopper = require('karma').stopper
stopper.stop({port: 9876}, function(exitCode) {
  if (exitCode === 0) {
    console.log('Server stop as initiated')
  }
  process.exit(exitCode)
})
新行為 #
const karma = require('karma')

karma.config.parseConfig(
  null,
  { port: 9876 },
  { promiseConfig: true, throwErrors: true }
).then(
  (karmaConfig) => {
    karma.stopper.stop(karmaConfig, function doneCallback(exitCode, possibleErrorCode) {
      if (exitCode === 0) {
        console.log('Server stop as initiated')
      }
      process.exit(exitCode)
    })
  },
  (rejectReason) => { /* respond to the rejection reason error */ }
);

callback 參數 #

回調函數接收退出代碼作為第一個參數。

如果發生錯誤,錯誤代碼將作為錯誤回調函數的第二個參數提供。

karma.config #

config.parseConfig([configFilePath], [cliOptions], [parseOptions]) #

此函數將載入指定的設定檔並返回一個填充的設定物件。如果您想將 karma 整合到另一個工具中,並且想要載入 karma 設定檔的同時保留 karma 預設值,這將非常有用。

用法 #

已棄用的行為 #

以下程式碼仍然有效,但其行為已被棄用,並將在未來的主要版本中更改。

const cfg = require('karma').config;
const path = require('path');
// Read karma.conf.js, but override port with 1337
const karmaConfig = cfg.parseConfig(
  path.resolve('./karma.conf.js'),
  { port: 1337 }
);

未來的新的行為將涉及拋出異常而不是退出進程,並且將通過使用 Promise 支援異步設定檔。

新行為 #
const cfg = require('karma').config;
const path = require('path');
// Read karma.conf.js, but override port with 1337
cfg.parseConfig(
  path.resolve('./karma.conf.js'),
  { port: 1337 },
  { promiseConfig: true, throwErrors: true }
).then(
  (karmaConfig) => { /* use the config with the public API */ },
  (rejectReason) => { /* respond to the rejection reason error */ }
);

configFilePath 參數 #

  • 類型: 字串 | null | undefined
  • 預設值: undefined

一個表示檔案系統路徑的字串,指向設定檔,該設定檔的預設匯出是一個函數,將用於設定 Karma 設定選項。此函數將傳遞 Config 類的實例作為其第一個參數。如果未提供此選項,則只會設定 cliOptions 參數提供的選項。

  • JavaScript 必須使用 CommonJS 模組。
  • 使用 JavaScript 時,Karma 目前不支援 ECMAScript 模組。
    • 其他格式,例如 TypeScript,可能支援 ECMAScript 模組。

cliOptions 參數 #

  • 類型: 物件 | null | undefined
  • 預設值: undefined

一個物件,其值將優先於設定檔中設定的選項。傳遞給設定檔匯出的函數的設定物件將已套用這些選項。設定檔對這些選項所做的任何更改在最終設定中都將被有效忽略。

支援與設定檔相同的所有選項,並使用相同的 config.set() 方法套用。

此參數的預期來源是已解析的命令列選項,但程式設計使用者可以建構此物件或完全省略它。

parseOptions 參數 #

  • 類型: 物件 | null | undefined
  • 預設值: undefined

parseOptions 是一個物件,其屬性是設定選項,允許對解析進行額外控制,並選擇加入新行為或功能。

這些選項僅與解析設定檔和物件相關,與 Karma 本身的設定無關。

parseOptions.promiseConfig 選項 #
  • 類型: 布林值
  • 預設值: false

parseOptions.promiseConfig === true 時,parseConfig 將返回一個 Promise 而不是一個設定物件。

當此選項為 true 時,設定檔匯出的函數可能會返回一個 Promise。該 Promise 的解析表示所有異步活動都已完成。在內部,解析/實現的值將被忽略。與同步使用一樣,所有對設定物件的更改都必須使用 config.set() 方法完成。

如果設定檔匯出的函數沒有返回 Promise,則解析完成並立即返回一個已實現的 Promise。

無論設定檔匯出的函數是否返回 Promise,parseConfig() 返回的 Promise 都將解析為一個已解析的設定物件,即 Config 類的實例,作為值。

在大多數情況下,也應設定 parseOptions.throwErrors = true。這將禁用進程退出,並允許錯誤導致 Promise 被拒絕。

parseOptions.throwErrors 選項 #
  • 類型: 布林值
  • 預設值: false

過去,parseConfig() 在遇到嚴重故障時會呼叫 process.exit(exitCode)。這意味著您自己的程式碼在 Node.js 進程退出之前無法響應故障。

通過傳遞 parseOptions.throwErrors = trueparseConfig() 將禁用進程退出。

對於同步使用,它將拋出異常而不是退出進程。然後,您的程式碼可以捕獲異常並根據需要做出響應。

如果正在使用異步 API (parseOptions.promiseConfig = true),則 parseOptions.throwErrors = true 允許 Promise 被拒絕而不是退出進程。

karma.constants #

constants.VERSION #

karma 的當前版本

constants.DEFAULT_PORT #

karma 伺服器使用的預設通訊埠

constants.DEFAULT_HOSTNAME #

karma 伺服器使用的預設主機名

constants.DEFAULT_LISTEN_ADDR #

karma 伺服器監聽的預設地址

constants.LOG_DISABLE #

禁用日誌的值

constants.LOG_ERROR #

日誌 error 級別的值

constants.LOG_WARN #

日誌 warn 級別的值

constants.LOG_INFO #

日誌 info 級別的值

constants.LOG_DEBUG #

日誌 debug 級別的值

constants.LOG_PRIORITIES #

日誌級別的陣列,按降序排列,即 LOG_DISABLELOG_ERRORLOG_WARNLOG_INFOLOG_DEBUG

constants.COLOR_PATTERN #

日誌輸出的預設顏色模式

constants.NO_COLOR_PATTERN #

沒有顏色的日誌輸出的預設模式

constants.CONSOLE_APPENDER #

預設的控制台附加器

constants.EXIT_CODE #

退出代碼