快速使用jasmine进行前端测试

A JavaScript Testing Framework
Jasmine is a Behavior Driven Development testing framework for JavaScript. It does not rely on browsers, DOM, or any JavaScript framework. Thus it's suited for websites, Node.jsprojects, or anywhere that JavaScript can run.

引自jasmine官网,意思就是jasmine是j测试avascript的行为测试驱动开发框架,不依赖于浏览器,DOM,或者任何其他javascript框架,从而它适用与网站,nodejs项目,或者任何javascript项目。

下面就主要演示下如何使用jasmine对javascript代码进行测试。

我的环境

  • ubuntu 16.04
  • webStorm

使用jasmine

1.安装jamine

mkdir jasmine-study-demo  //创建文件夹
cd  jasmine-study-demo   
npm install -g jasmine    //全局安装jasmine

2.初始化jasmine

jasmine init  //文件夹下会出spec文件夹    

3.创建测试文件

在根目录下创建一个待测试文件

hello.js
module.exports = function () {
    return 'hello';
};

在spec目录下创建一个测试文件

helloSpec.js
var hello = require('../hello');

describe("A suite", function () {
    it("contains spec with an expectation", function () {
        expect(hello()).toBe("hello");
    });
});

4.执行测试文件 ,在终端执行命令:

jasmine
执行结果

你会看到页面有个小绿点,这就说明我们的测试成功了。

其他方法

刚才我们是在终端执行命令,其实也可以把jasmine当作一个javascript模块,使用运行js文件的执行方法运行。两种方法一点也不冲突,所以就可以在上面的文件夹中实践下。

在终端运行下面的命令:

npm init  //一直回车默认,出现package.json
npm install jasmine --save-dev   //在package.json添加jasmine依赖

在当前文件夹根目录下创建run.js文件夹

var Jasmine = require('jasmine');
var jasmine = new Jasmine();

jasmine.loadConfigFile('spec/support/jasmine.json');
jasmine.execute();

在IDE中运行run.js文件夹

测试结果

测试成功,现在我们就有了两种运行方法,一个是在终端下键入命令jamine,另一个是在IDE下运行run.js文件。

demo github地址:https://github.com/DQing/jasmine-study-demo

测试文件解析

在demo中,有两个比较重要的文件,一个是jasmine的配置文件jasmine.json,另一个就是helloSpec.js测试文件

1.jasmine.json

{
  "spec_dir": "spec",  //指定扫描测试文件的根目录,测试文件所在的目录
  "spec_files": [             //匹配测试文件的表达式,表示测试文件是以Spec/spec结尾
    "**/*[sS]pec.js"
  ],
  "helpers": [    // Helper 文件会在所有的 spec 之前预先执行
    "helpers/**/*.js"
  ],
  "stopSpecOnExpectationFailure": false,  //当有错误出现时是否终止所有测试
  "random": false   //是否打乱测试顺序
}

2.helloSpec.js

var hello = require('../hello');   //获取待测试文件

describe("A suite", function () {    
    it("contains spec with an expectation", function () {
        expect(hello()).toBe("hello");
    });
});

describe 是 Jasmine 的全局函数,作为一个 Test Suite 的开始,它通常有 2 个参数:字符串和方法。字符串作为特定 Suite 的名字和标题。方法是包含实现 Suite 的代码。其中具体法让测试在it中实现,it 也是有 2 个参数,字符串和方法,字符串是为了描述这个it所要实现的内容,方法中进行测试实现。

其中在实现测试时,一般会使用jasmine自带的方法,有

  • toBe()
  • toNotBe()
  • toBeDefined()
  • toBeUndefined()
  • toBeNull()
  • toBeTruthy()
  • toBeFalsy()
  • toBeLessThan()
  • toBeGreaterThan()
  • toEqual()
  • toNotEqual()
  • toContain()
  • toBeCloseTo()
  • toHaveBeenCalled()
  • toHaveBeenCalledWith()
  • toMatch()
  • toNotMatch()
  • toThrow()

详细用法可参考:https://github.com/greim/reglib/tree/master/jasmine

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容