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

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

  1. 先要安装nodejs

  2. 直接cmd进入js所在的目录

  3. 通过 npm 安装karma:

    1. npm install --save-dev karma
  4. 通过如下命令确认karma安装成功

    1. node ./node_modules/karma/bin/karma --version
  5. global安装karma-cli来直接执行karma命令

    1. npm i -g karma-cli
  6. 通过如下命令确认安装成功

    1. karma --version
  7. 通过如下命令安装jasmine

    1. npm i -D jasmine-core karma-jasmine karma-chrome-launcher
  8. 通过如下命令创建 karma.conf.js 配置文件

    1. karma init
  9. 配置karma.conf.js

    1. browsers: ['ChromeHeadless'],
    2. customLaunchers: {
    3. ChromeHeadlessCI: {
    4. base: 'ChromeHeadless',
    5. flags: ['--no-sandbox']
    6. }
    7. }
  10. 配置karma.conf.js以让karma能够找到你的测试文件:

    1. files: [
    2. '*.js',
    3. '*.spec.js'
    4. ],
    5. exclude: ['karma.conf.js'],
  11. 添加test_if_karma_works.js,并ctrl+v以下内容

    1. function add(a, b){
    2. return a + b;
    3. }
  12. 添加test_if_karma_works.spec.js,并ctrl+v以下内容

    1. describe('add function unit test.', function(){
    2. it('2 + 3 = 5', function(){
    3. var result = add( 2, 3 );
    4. expect( result ).toBe( 5 );
    5. });
    6. it('2 + 3 = 6, this should faild.', function(){
    7. var result = add( 2, 3 );
    8. expect(result).toBe( 6 );
    9. })
    10. });
  13. 通过如下命令开始测试

    1. karma start

    或者

    1. node ./node_modules/karma/bin/karma start
  14. 通过如下命令安装karma代码覆盖率

    1. npm install --save-dev karma-coverage
  15. 修改karma.conf.js

    1. // preprocess matching files before serving them to the browser
    2. // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    3. /* 覆盖源文件 不包括测试库文件*/
    4. preprocessors: {
    5. 'src/**/*.js': ['coverage']
    6. },
    7. // test results reporter to use
    8. // possible values: 'dots', 'progress'
    9. // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    10. reporters: ['progress', 'coverage'],
    11. /* 新增的配置项 */
    12. coverageReporter: {
    13. type: 'html',
    14. dir: 'coverage/'
    15. },
  16. 通过如下命令改为spec模式

    1. npm install karma-spec-reporter --save-dev
  17. 修改karma.conf.js

    1. reporters: ['spec'],
  18. git check in (不要签入coverage目录,但是要把node_modules目前签入,因为时过境迁,旧的package会被删掉,只能靠这里的git库来还原了。)

使用Jasmine和karma对传统js进行单元测试的更多相关文章

  1. Lodop获取全部JS代码,传统JS模版的生成

    Lodop模版有两种方法,一种是传统的JS语句,可以用JS方法里的eval来执行,一种是文档式模版,是特殊格式的base64码,此篇博文介绍传统JS模版的生成方法.两种模版都可以存入一下地方进行调用, ...

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

    1. 关于Karma Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner). 该工具可用于测试所有主流Web浏览器,也可集成到CI(Continuou ...

  3. 使用jasmine来对js进行单元测试

    互联网的快速发展,给web开发人员带来了前所未有的挑战.对于前端开发,前端开发er所需要编写的js早已不是那些寥寥几行的视觉效果代码.代码量的大增,多人协同,人员素质悬殊不齐,这都需要一个标准,来对代 ...

  4. 传统js和jsx与ts和tsx的区别

    一.从定义文件格式方面说 1.传统的开发模式可以定义js文件或者jsx文件2.利用ts开发定义的文件格式tsx二.定义state的状态来说 1.传统的方式直接在构造函数中使用 constructor( ...

  5. 使用Karma、Mocha实现vue单元测试

    Karma Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner).该工具在Vue中的主要作用是将项目运行在各种主流Web浏览器进行测试.换句话说,它是 ...

  6. Vue Cli 中使用 Karma / Chrome 执行样式相关单元测试

    在 GearCase 开源项目 中,我使用了 Vue Cli 的默认测试框架.因此和样式相关的东西,都无法进行测试.因为它并不类似于无头浏览器,而是存在于虚拟内存之中. 现状 在如下 button.s ...

  7. Node.js的单元测试框架初体验

    Mocha是一个功能丰富的JavaScript测试框架,运行在node.js平台和浏览器端,使异步测试变得简单和有趣.Mocha测试是串行的,允许灵活和准确的报告,同时将未捕获的异常映射到相应的测试用 ...

  8. 一步步构建自己的AngularJS(1)——项目初始化

    Angular1距离2009年发布已经好多年了,Angular2也已经出了Beta版,估计今年就能正式发布.大多数人对于Angular1.X的认识仅限于能够在项目中使用,对于其中的深层原理知道的并不多 ...

  9. JS相关环境搭建:Nodejs、karma测试框架、jsDuck、Express

    第一章:压缩js(nodejs,uglify) 第一步:安装nodejs环境 直接下载http://www.nodejs.org/download/ 下载完成后直接下一步下一步即可,完了我们就具有no ...

随机推荐

  1. python 04 分支和循环

    创建一个框架  名字.py 打飞机游戏 加载音乐 播放音乐 我打飞机诞生 inter=0 while true: if 用户是否惦记了关闭: 退出程序 bleak inter+=1 if inter ...

  2. IntelliJ IDEA中如何再次调出springboot的依赖窗口

    原文链接:https://blog.csdn.net/qq_38138069/article/details/102528587 IDEA中如何再次调出springboot的依赖窗口,随时可以根据喜好 ...

  3. Robot Framework(3)——RIDE工具详解

    上一篇介绍了用RF来简单运行案例,此篇主要了解一下工具操作 一.菜单栏 1.File 1>New Project:新建工程 2>Open Test Suite:打开测试套件 3>Op ...

  4. 团队作业1——团队展示&选题 (追忆少年)

    目录 一,团队展示 1.1队名 1.2队员学号 1.3项目描述 1.4队员风采 1.5团队分工 1.6团队合照 1.7团队特色 (一)目标导向 (二)协作基础 (三)共同的规范和方法 (四)技术或技能 ...

  5. 焦大:SEO重思录(上)收录量和收录率的重新定位

    http://www.wocaoseo.com/thread-198-1-1.html 前一段焦大在seo前线就看到有人问为何我收录量很大但是流量很低呢?有时候几百万的收录量但是流量却只有1000不到 ...

  6. 如何利用微博客进行seo赚钱营销

    http://www.wocaoseo.com/thread-130-1-1.html       我们知道做SEO就是用人的思维来模仿搜索引擎的习惯,尽量适应seo的规则,并按照搜索引擎的规则和习惯 ...

  7. MySQL集群搭建方案(PXC)

    服务器快过期了,清一点库存,把运维这块的知识复习下 为什么要搭MySQL集群 技术层面上,传统的单节点数据库,万一宕机了,就凉凉了.容灾性能差.抗并发能力有限,数据量大的时候查询有瓶颈.学习层面上,作 ...

  8. Oracle数据库的文件以及Oracle体系架构

    第一部分.Oracle数据库的文件 1.参数文件:控制实例的行为的参数的集合 参数文件的作用 设定数据库的限制 设置用户或者进程的限制 设定数据库资源的限制 调整系统的性能 主要的参数文件 SGA_T ...

  9. SplashImage

    关于Unity启动时间过长(启动黑屏时间长)的问题 https://blog.csdn.net/h5q8n2e7/article/details/50484458 Unity3D游戏开发之“重写Uni ...

  10. Lua继承userdata

    http://blog.csdn.net/mywcyfl/article/details/37765751 http://blog.csdn.net/teng_ontheway/article/det ...