大多數情況下,您將直接從命令列使用 Karma。但是,您可以從您的節點模組以程式設計方式呼叫 Karma。以下是公開 API。
建構函式
#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
事件。
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.run()
返回一個 EventEmitter
,它發出一個 progress
事件,將報告器輸出作為 Buffer
物件傳遞。
您可以監聽該事件以將報告器輸出列印到控制台
runner.run({port: 9876}).on('progress', function(data) {
process.stdout.write(data)
})
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
參數 #回調函數接收退出代碼作為第一個參數。
如果發生錯誤,錯誤代碼將作為錯誤回調函數的第二個參數提供。
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
參數提供的選項。
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 = true
,parseConfig()
將禁用進程退出。
對於同步使用,它將拋出異常而不是退出進程。然後,您的程式碼可以捕獲異常並根據需要做出響應。
如果正在使用異步 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_DISABLE
、LOG_ERROR
、LOG_WARN
、LOG_INFO
和 LOG_DEBUG
constants.COLOR_PATTERN
#日誌輸出的預設顏色模式
constants.NO_COLOR_PATTERN
#沒有顏色的日誌輸出的預設模式
constants.CONSOLE_APPENDER
#預設的控制台附加器
constants.EXIT_CODE
#退出代碼