使用Jasmine和karma对传统js进行单元测试

Posted 测试萌萌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Jasmine和karma对传统js进行单元测试相关的知识,希望对你有一定的参考价值。


当你拿到十五年前的一堆javascript的代码,你如何对这堆javascript代码写单元测试呢?于是就有了这篇文章。

注意:不需要装任何现代化js框架,包括angular,react,vue之类的,都不需要装!!!

  1. 先要安装 nodejs
  2. 直接cmd进入js所在的目录
  3. 通过 npm 安装karma:
npm install --save-dev karma
  1. 通过如下命令确认karma安装成功
node ./node_modules/karma/bin/karma --version
  1. global安装karma-cli来直接执行karma命令
npm i -g karma-cli
  1. 通过如下命令确认安装成功
karma --version
  1. 通过如下命令安装jasmine
npm i -D jasmine-core karma-jasmine karma-chrome-launcher
  1. 通过如下命令创建 karma.conf.js 配置文件
karma init
  1. 配置karma.conf.js
browsers: ['ChromeHeadless'],
customLaunchers: {
ChromeHeadlessCI: {
      base: 'ChromeHeadless',
      flags: ['--no-sandbox']
   }
}

0、配置karma.conf.js以让karma能够找到你的测试文件:

files: [      
   '*.js',
   '*.spec.js'
],
exclude: ['karma.conf.js'],

1、添加test_if_karma_works.js,并ctrl+v以下内容

function add(a, b){
   return a + b;
}

2、添加test_if_karma_works.spec.js,并ctrl+v以下内容

describe('add function unit test.', function(){
   it('2 + 3 = 5', function(){
      var result  = add( 2, 3 );
      expect( result ).toBe( 5 );
   });

   it('2 + 3 = 6, this should faild.', function(){
      var result = add( 2, 3 );
      expect(result).toBe( 6 );
   })
});

3、通过如下命令开始测试

karma start

或者

node ./node_modules/karma/bin/karma start

4、通过如下命令安装karma代码覆盖率

npm install --save-dev karma-coverage

5、修改karma.conf.js

// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
/* 覆盖源文件 不包括测试库文件*/
preprocessors: {
   'src/**/*.js': ['coverage']
},


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

/* 新增的配置项 */
coverageReporter: {
   type: 'html',
   dir: 'coverage/'
},

6、通过如下命令改为spec模式

npm install karma-spec-reporter --save-dev

7、修改karma.conf.js

reporters: ['spec'],

8、git check in (不要签入coverage目录,但是要把node_modules目前签入,因为时过境迁,旧的package会被删掉,只能靠这里的git库来还原了。)


最后: 欢迎大家关注公众号:【 伤心的辣条 】,领取一份300页pdf文档的Python自动化测试工程师核心知识点总结!

公众号里大部分资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果你测试中有许多的困惑,那么我创建的软件测试技术交流群将会是你接触良师益友的有益社区,同行或许可以给你带来一些实际性的帮助与突破。Q群:902061117 你也想知道同行都在怎样致富吧!

如果对你有一点点帮助,各位的「点赞」就是小编创作的最大动力,我们下篇文章见!

好文推荐:

包装成1年工作经验的测试工程师,我给他的面试前的建议如下

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

“入职一年,那个被高薪挖来的自动化软件测试被劝退了。”

那个准点下班的人,比我先升职了…

自动化测试大总结

以上是关于使用Jasmine和karma对传统js进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章

使用 Karma Jasmine 的 Angular 1.5 组件模板单元测试

为啥使用 jasmine 对 Node typescript 项目进行 Karma 单元测试会显示包含依赖项的覆盖范围?

Karma +Jasmine+ require JS进行单元测试并生成测试报告代码覆盖率报告

使用 jasmine 和 karma 进行单元测试时形成数组错误

使用 Jasmine 和 Karma 进行角度单元测试时出错

在我的 JSPM 包上使用 JSPM 404 进行 Karma/Jasmine 单元测试