大多数情况下,您将直接从命令行使用 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 | undefinedundefined表示指向配置文件的文件系统路径的字符串,该配置文件的默认导出是一个函数,该函数将用于设置 Karma 配置选项。此函数将接收 Config 类的实例作为其第一个参数。如果未提供此选项,则仅设置 cliOptions 参数提供的选项。
cliOptions 参数 #null | undefinedundefined其值将优先于配置文件中设置的选项的对象。传递给配置文件导出的函数的配置对象将已应用这些选项。配置文件对此类选项所做的任何更改实际上都将在最终配置中被忽略。
支持与配置文件相同的选项,并使用相同的 config.set() 方法应用。
此参数的预期来源是解析的命令行选项,但程序化用户可以构造此对象或完全省略它。
parseOptions 参数 #null | undefinedundefinedparseOptions 是一个对象,其属性是配置选项,允许对解析进行额外的控制,并选择加入访问新行为或功能。
这些选项仅与解析配置文件和对象有关,与 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 #退出代码