资讯专栏INFORMATION COLUMN

Javascript CI篇(2)- Karma 基础学习

Ku_Andrew / 1181人阅读

摘要:核心功能就是启动一个服务并监听项目文件改变,文件改变后再刷新服务器。

Karma 简介

Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular改名为Karma。Karma是一个让人感到非常神秘的名字,表示佛教中的缘分,因果报应,比Cassandra这种名字更让人猜不透!

Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner)。该工具可用于测试所有主流Web浏览器,也可集成到CI(Continuous integration)工具,也可和其他代码编辑器一起使用。这个测试工具的一个强大特性就是,它可以监控(Watch)文件的变化,然后自行执行,通过console.log显示测试结果。

Karma 和 mocha,Qunit,jasmine区别
But I still want to use _insert testing library_

Karma is not a testing framework, nor an assertion library. Karma just launches an HTTP server, and generates the test runner HTML file you probably already know from your favourite testing framework. So for testing purposes you can use pretty much anything you like. There are already plugins for most of the common testing frameworks:

Jasmine
Mocha
QUnit
and many others
If you can"t find an adapter for your favourite framework, don"t worry and write your own. It"s not that hard and we are here to help.

引用官方的说明,karma不是一个测试框架,没有断言库。Karma只是运行了一个HTTP服务并生成一个测试入口HTML文件Test Runner。所以使用Karma需要自己选择测试框架,主流的测试框架有:

Jasmine

Mocha

QUnit

Karma 默认的是使用jasmine

当你项目有以下需求的时候,可以考虑使用Karma

你想在真实的浏览器中测试代码

你想测试代码在多平台,多个浏览器(桌面,移动设备,平台)

你想在本地开发期间执行测试

你想在持续集成服务器执行测试

你想执行测试在每次保存

You love your terminal.

You don"t want your (testing) life to suck.

你想使用Instanbul去自动化生成覆盖率报告

You want to use RequireJS for your source files.

正式开始使用 安装
# Install Karma:
$ npm install karma --save-dev

# Install plugins that your project needs:
$ npm install karma-jasmine karma-chrome-launcher jasmine-core --save-dev
初始化配置文件
 karma init my.conf.js

这里一路按enter就可以了,我们使用默认的测试框架jasmine

启动
 karma start my.conf.js

我的项目中会报找不到Error: Cannot find module "jasmine-core"错误,开始采用的是 npm install --save-dev的模式有这个问题,分析了源码觉得是他们代码或者是node 环境下CMD的问题,我运行的Node版本是6.9.1。后来通过npm install -g 的方式暂时修复了

karma.conf.js
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: "",
    
    // 测试框架
    frameworks: ["jasmine"],


    // 要监听的文件列表,支持通配符模式
    files: [**/*.test.js],

    // 要排除的文件列表,支持通配符
    exclude: [**/*.js],

    // 在文件提交给浏览器做预处理
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
    },


    // test results reporter to use
    // possible values: "dots", "progress"
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ["progress"],


    // web server port
    port: 9876,


    // enable / disable colors in the output (reporters and logs)
    colors: true,


    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ["Chrome"],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false,

    // Concurrency level
    // how many browser should be started simultaneous
    concurrency: Infinity
  })
}
总结

是不是觉得Karma挺简单的?确实是挺简单的,这就是Test-Runner而不是Test Framework。Karma核心功能就是启动一个服务并监听项目文件改变,文件改变后再刷新服务器。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84168.html

相关文章

  • Javascript CI(3)- Karma + Jasmine + istanbul 集成

    摘要:脚本修改配置文件这里要注意,预处理的文件是源码,而不是测试文件,因为我们要查源码的测试覆盖率的配置这两个覆盖率报告运行运行后直接在网页中点可以看测试情况。如果你看覆盖率需要到项目目录找到对应浏览器地下的文件。 karma 和 jasmine 基础 请查看Jasmine基础学习和Karma基础学习 安装 //karma npm install karma --save-dev //ja...

    wwolf 评论0 收藏0
  • Javascript CI(4)- Github + Travis 持续集成

    摘要:简介是目前新兴的开源持续集成构建项目,它与,的很明显的特别在于采用格式,简洁清新独树一帜。目前大多数的项目都已经移入到的构建队列中,据说每天运行超过次完整构建。查看构建情况增加逼格首先要是一个文档。是由提供的真实的构建情况。 Travis简介 Travis CI(continuous integration )是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于...

    pingink 评论0 收藏0
  • 自动化测试(未完,后续学习之后会补充更具体的)

    摘要:断言断言是什么模块提供了一组简单的断言测试,可用于测试不变量。环境是他们不必设置大量配置的环境,而是开发人员可以编写代码并从测试中获得即时反馈的地方。每当测试时,结果将出现在您的拉取请求中,您的历史记录将在其控制面板中提供。 Node assert (断言) 断言是什么 assert 模块提供了一组简单的断言测试,可用于测试不变量。 存在严格模式(strict)和遗留模式(legacy...

    姘存按 评论0 收藏0
  • 为你的JavaScript代码写测试

    摘要:下面会讲解如何使用以及,来为我们的代码编写测试。我们不妨先选择前者综上所述,我们要使用组合来为我们的代码写测试。他们分别会在每个测试的之前和之后执行一次。副本最后还有一个问题是如何结合来为我们的代码编写测试。 下面会讲解如何使用 karama, jasmine 以及 webpack,来为我们的 ES6 代码编写测试。(最后我写了一个可用的例子,请查看 ES2015-Starter-Ki...

    FleyX 评论0 收藏0
  • Omi原理-环境搭建

    摘要:相关依赖有和其余都是单元测试相关依赖注意,这里使用了。因为使用框架支持和使用是为了在单元测试里面使用的和等语法。脚本其中生成目录的文件执行单元测试编译的编译的在中,会根据去设置不同的入口文件。 环境搭建 Omi框架使用 Webpack + ES6 的方式去开发;使用karma+jasmine来作为Omi的测试工具。 Karma介绍 Karma是一个基于Node.js的JavaScrip...

    lncwwn 评论0 收藏0

发表评论

0条评论

Ku_Andrew

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<