最新Karma4.0安装和使用

官网:https://karma-runner.github.io/4.0/intro/installation.html

介绍

Karma本质上是一个Web服务器的工具,该服务器针对连接的每个浏览器执行测试源代码,检查每个浏览器的测试结果然后通过命令行显示给开发人员,以便他们可以看到哪些浏览器通过了测试或者没有通过测试。
可以用以下方式捕获浏览器:

  • 手动,通过访问Karma服务器正在监听的URL(通常http://localhost:9876/
  • 或者让Karma知道在运行Karma时要启动哪些浏览器(通过配置)

Karma还会监视配置文件中指定的所有文件,并且每当任何文件发生更改时,它都会通过向测试服务器发送信号来通知所有捕获的浏览器再次运行测试代码来触发测试运行。然后,每个浏览器将源文件加载到iFrame中,执行测试并将结果报告回服务器。

服务器从所有捕获的浏览器中收集结果并将其呈现给开发人员。

这只是一个非常简短的概述,因为当使用Karma时,知道Karma内部如何工作不是必须的。如果想深入了解,请阅读这篇论文:thesis

1、安装

Karma4.0适用的node版本6.x,8.x和10.x
安装Karam和相应的插件

# Install Karma:
npm install karma --save-dev

# Install plugins that your project needs:
npm install karma-jasmine karma-chrome-launcher jasmine-core --save-dev

安装命令行工具

npm install -g karma-cli

2、生成配置文件

使用karma init生成配置文件,运行该命令后会出现如下提示:

$ karma init my.conf.js

Which testing framework do you want to use?
Press tab to list possible options. Enter to move to the next question.
> jasmine

Do you want to use Require.js?
This will add Require.js plugin.
Press tab to list possible options. Enter to move to the next question.
> no

Do you want to capture a browser automatically?
Press tab to list possible options. Enter empty string to move to the next question.
> Chrome
> Firefox
>

What is the location of your source and test files?
You can use glob patterns, eg. "js/*.js" or "test/**/*Spec.js".
Press Enter to move to the next question.
> *.js
> test/**/*.js
>

Should any of the files included by the previous patterns be excluded?
You can use glob patterns, eg. "**/*.swp".
Press Enter to move to the next question.
>

Do you want Karma to watch all the files and run the tests on change?
Press tab to list possible options.
> yes

Config file generated at "/Users/vojta/Code/karma/my.conf.js".

3、运行Karma

运行Karma时配置文件可以作为第一个参数传入。
默认情况下karma会在当前目录下寻找:

  • ./karma.conf.js
  • ./karma.conf.coffee
  • ./karma.conf.ts
  • ./.config/karma.conf.js
  • ./.config/karma.conf.coffee
  • ./.config/karma.conf.ts

你也可以指定自定义的文件,例如:

karma start my.conf.js

可以使用命令行参数覆盖配置文件中的配置参数

karma start my.conf.js --log-level debug --single-run

4、集成Grunt/Gulp

5、配置文件

karma的配置文件是一个node模块,该模块导出一个函数,该函数接受一个config参数,可以使用这个参数来配置对象:

// karma.conf.js
module.exports = function(config) {
  config.set({
    basePath: '../..',
    frameworks: ['jasmine'],
    //...
  });
};
# karma.conf.coffee
module.exports = (config) ->
  config.set
    basePath: '../..'
    frameworks: ['jasmine']
    # ...
// karma.conf.ts
module.exports = (config) => {
  config.set({
    basePath: '../..',
    frameworks: ['jasmine'],
    //...
  });
}

注意:在karma底层使用ts-node来转化TypeScript为Javascript,如果tsconfig.json把模块配置js模块,可能会得到SyntaxError: Unexpected token的错误,这是因为js模块在node中是不支持的,要解决这个问题需要使用commonjs模块,我们可以覆盖模块配置:

// karma.conf.js
require('ts-node').register({ 
  compilerOptions: { 
    module: 'commonjs' 
  } 
});
require('./karma.conf.ts');

5.1、配置选项

这里列举了一些比较常用的配置选项,全部配置选项请参考:全部配置选项
一些常见的karam插件请参考:常见的Karma插件

autoWatch

Type: Boolean
Default: true
CLI: --auto-watch, --no-auto-watch
每当文件改变的时候监视文件并执行测试用例

autoWatchBatchDelay

Type: Number
Default: 250
将多个文件的改变集中到一个批次运行,避免抖动。该选项告诉Karam在最后一个文件改变到新开始一轮测试要等待多久,单位毫秒。

basePath

Type: String
Default: ‘’
设置相对定位文件的根目录

browsers

Type: Array
Default: []
CLI: --browsers Chrome,Firefox, --no-browsers
可设置的值

  • Chrome (launcher requires karma-chrome-launcher plugin)
  • ChromeCanary (launcher requires karma-chrome-launcher plugin)
  • ChromeHeadless (launcher requires karma-chrome-launcher plugin ^2.1.0)
  • PhantomJS (launcher requires karma-phantomjs-launcher plugin)
  • Firefox (launcher requires karma-firefox-launcher plugin)
  • Opera (launcher requires karma-opera-launcher plugin)
  • IE(launcher requires karma-ie-launcher plugin)
  • Safari (launcher requires karma-safari-launcher plugin)
    设置一个浏览器列表用于测试,当karma运行时,会打开该数组设置的所有浏览器进行测试,也可以手动访问karma服务器(默认http://localhost:9876/)。在命令行使用--no-browsers可以覆盖该值为一个空列表。

client.useIframe

Type: Boolean
Default: true
true:karma运行在一个iFrame,false:karma会运行在一个新窗口。

client.runInParent

Type: Boolean
Default: false
如果设置为true,karma会运行在原窗口内,而不是使用iFrame或者打开一个新的窗口,它将会动态加载测试脚本。

client.clearContext

Type: Boolean
Default: true
true:karma在测试完成时将会清除浏览器窗口的内容。flase则不会,这在嵌入jasmine测试模版的时候很有用。

colors

Type: Boolean
Default: true
CLI: --colors, --no-colors
是否使输出字体带有颜色(报告或者日志)

files

Type: Array
Default: []
设置加载到浏览器的文件列表,详情请参考:config/files

exclude

Type: Array
Default: []
需要排除的文件列表

frameworks

Type: Array
Default: []
你想要使用的框架列表,通常设为['jasmine'], ['mocha'] or ['qunit']

listenAddress

Type: String
Default: ‘0.0.0.0’ or LISTEN_ADDR
服务器地址

hostname

Type: String
Default: ‘localhost’
主机名

port

Type: Number
Default: 9876
CLI: --port 9876
设置服务器端口,如果端口被占用,则会自动加1直到有可用的端口。

logLevel

Type: Constant
Default: config.LOG_INFO
CLI: --log-level debug
可设置的值:

  • config.LOG_DISABLE
  • config.LOG_ERROR
  • config.LOG_WARN
  • config.LOG_INFO
  • config.LOG_DEBUG

plugins

Type: Array
Default: [‘karma-*’]
插件列表,一个插件可以是一个字符串,或者一个对象,或者使用require引入,详情请参考:插件列表。默认Karma会加载node_modules下所有以karma-*开头的插件。

reporters

Type: Array
Default: [‘progress’]
CLI: --reporters progress,growl
可能的值:

  • dots
  • progress

额外的reporters, 例如growl, junit, teamcity or coverage 可以通过插件加载。

singleRun

Type: Boolean
Default: false
CLI: --single-run, --no-single-run
如果设置为true,则karma只会执行一次。

### 回答1: Karma是一个JavaScript测试运行器,用于帮助开发人员在其项目执行单元测试。为了离线安装Karma,你可以按照以下步骤进行操作: 1. 首先,在你的计算机上下载并安装Node.js,Node Package Manager(npm)将随之安装。 2. 打开命令行或终端窗口,并通过npm全局安装Karma命令行工具。在命令行输入以下命令:`npm install -g karma-cli`,等待安装完成。 3. 在你的项目文件夹,创建一个新的文件夹用于存储Karma的配置文件和测试文件。 4. 进入你的项目文件夹,通过npm初始化一个新项目。在命令行输入以下命令:`npm init`,然后根据提示填写相关信息,并在最后生成的`package.json`文件添加Karma的依赖项。 5. 安装Karma和相关插件。在命令行输入以下命令:`npm install karma karma-chrome-launcher karma-jasmine jasmine-core --save-dev`,其的插件名称可以根据你的需求进行更改。 6. 在你的项目文件夹创建Karma的配置文件。在命令行输入以下命令:`karma init`,然后按照提示进行配置,包括选择测试框架(比如Jasmine)、浏览器启动器等。 7. 编写你的单元测试文件,并将其放入你的测试文件夹。 8. 在命令行执行Karma命令来执行测试。在命令行输入以下命令:`karma start`,Karma将查找并执行你的单元测试文件,并输出测试结果。 通过按照以上步骤,你可以成功离线安装使用Karma进行JavaScript单元测试。记得在终端窗口运行命令时,要确保你正在项目文件夹的正确路径下。 ### 回答2: Karma是一个JavaScript测试运行器,用于自动化测试。虽然Karma通常是通过npm全局安装的,但也可以选择离线安装。 要离线安装Karma,您可以按照以下步骤操作: 1. 首先,您需要从Karma的官方GitHub仓库(https://github.com/karma-runner/karma)下载Karma的发布版本。在GitHub页面的右侧,找到并点击“Clone or download”绿色按钮,然后选择“Download ZIP”选项,将Karma的源代码下载到本地。 2. 下载完成后,解压缩ZIP文件到您选择的目录。 3. 接下来,您需要确保已经安装了Node.js和npm。确保您的计算机上已经安装了适当版本的Node.js,可以在控制台运行`node -v`和`npm -v`命令来检查版本。 4. 打开命令行终端,进入您解压缩的Karma目录。在终端使用`cd`命令切换到Karma目录。 5. 在命令行终端,运行以下命令:`npm install`。这将自动根据Karma的package.json文件安装所需的依赖项。 6. 等待安装完成后,您就可以使用离线安装的Karma进行测试了。您可以在命令行运行`karma start`命令来启动Karma。 请注意,如果您之前已经全局安装了Karma,可能需要卸载全局安装后重启终端,以确保本地安装的Karma生效。 通过这些步骤,您可以离线安装Karma,方便您在没有互联网连接的环境进行JavaScript测试自动化。 ### 回答3: Karma是一款用于进行JavaScript单元测试的工具,它需要在Node.js环境下进行安装和运行。下面是如何离线安装Karma的步骤: 1. 首先,你需要下载Karma的离线安装包。你可以在Karma的官方网站或者其他可靠的资源网站上找到适用于你操作系统的离线安装包。 2. 下载完成后,解压缩安装包到一个目录,例如你的工作目录。 3. 打开命令行工具,进入到安装包所在的目录。 4. 在命令行运行以下命令安装Karma依赖的软件包: ``` npm install ``` 这将根据`package.json`文件的依赖关系自动安装所需的软件包。 5. 安装完成后,你可以使用以下命令来全局安装Karma: ``` npm install -g karma ``` 这将在你的系统全局安装Karma,使其可以在任何目录使用。 6. 最后,你可以在命令行运行以下命令来检查Karma是否安装成功: ``` karma --version ``` 如果显示了Karma的版本号,那么恭喜你,Karma已成功安装并可以离线使用了。 需要注意的是,离线安装时,确保你已经具备了安装Karma所需的所有软件包和依赖关系。此外,如果你在安装过程遇到问题,可以查阅Karma的官方文档或者在相关的技术社区寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值