文档章节

AngulaJs自动化测试之Karma和Jasmine

dhb_oschina
 dhb_oschina
发布于 2016/04/24 00:26
字数 743
阅读 93
收藏 1

一、入门简介

Karma和Jasmine的基本了解,参考另外一篇文章Angularjs官方示例项目之单元测试套件karma-jasmine


二、Karma配置

TBD


三、Jasmine

Jasmine的官方文档参考:Jasmine Behavior-Driven JavaScript Documentation 上面有很一个很详细的测试示例。

套件细则spec

Jasmine的核心套件是describe()函数,它是一个全局函数,可以在测试时被全局调用。

describe(specName, function(){})函数有两个参数,分别是细则spec套件的名字和测试套件的函数。describe()是可以嵌套的,也就是说可以在一个describe()的第二个参数函数中,再定义个describe()。

通过调用it()全局函数来在describe()中定义一个细则spec。

describe('A spec suite', functoin(){
    it('constains a equal spec', {
        expect(true).toBe(ture);
    });
});

一个describe()中可以有多个细则spec,同时,一个spec细则中也可以有多个预期expect断言项。但是,只有一个细则中所以的断言项目都通过,才算是通过一个细则spec。


设置函数beforeEach和afterEach

beforeEach(functon) 传入的参数是一个函数,该函数会在每个细则describe运行之前被调用。

同理,afterEach(function)则是在每个细则describe运作之后被调用。


预期与匹配器(断言库)

测试时,我们是想要知道某个断言条件下应用是符合我们的预期expect的。比如:“如果我们点击了这个按钮,我们会期望有什么结果。”在jasmine中,使用expect(needTestedValue)函数来创建这个预期,其参数表示我们真实的需要被测试的值。

相应的,有需要测试的值,就有我们期待的值。这个期待值就保存在匹配器macher,比如内置的toBe(expectedValue)中。

最后的语法类似与

expect(needTestedValue).macher(expectValue)

一个代码示例如下:

describe('A spec suite', functoin(){
    it('constains a equal spec', {
        expect(true).toBe(ture);
    });
    
    // you can use 'not'
     it('constains a  not equal spec', {
        expect(true).not.toBe(false);
    });   
});


内置的匹配器有:

//比较x和y是否值相等,相当于==
expect(x).toEqual(y);

//比较x和y是否不相等
expect(x).not.toEqual(y);

//比较x和y是否是相同的对象,相当于JavaScript中的"==="
expect(x).toBe(y);

//比较x是否匹配pattern正则
expect(x).toMatch(pattern);

//x是否为undefined
expect(x).toBeDefined();

//x是否为null
expect(x).toBeNull();

//x是否为true
expect(x).toBeTruthy();

//x是否为false
expect(x).toBeFalsy();

//y是在数组x中(x可以是字符串或数组)
expect(x).toContain(y);

//x是否比y小
expect(x).toBeLessThan(y);

//x是否比y大
expect(x).toBeGreaterThan(y);

//x是否在一个指定的浮点精度内与y相近
expect(x).toBeCloseTo(y);

//函数是否抛出异常
expect(fn).toThrow(e);

自定义匹配器

自定义方法是在Jasmine块中调用addMachers()函数

describe('A spec suite', functoin(){
    tihs.addMachers({
        customerMacher: function(expected) {
            // customer rule
            return this.actual <= expected;
        }
    });
});

这样就可以在测试套件中使用自定义的  customerMacher 匹配器了。


© 著作权归作者所有

dhb_oschina
粉丝 10
博文 221
码字总数 190651
作品 0
程序员
私信 提问
搭建Karma+Jasmine的自动化单元测试

最近在打算将以前的代码进行重构,过程中发现自己不写自动化测试代码,而是手动的写,这样并不好,所以就学了Karma+Jasmine的自动化单元测试,以后写代码尽量要写自动化单元测试,也要测一下...

Zenquan
2018/07/25
0
0
javascript 自动化单元测试

#JavaScript 自动化单元测试 - 为什么要进行自动化测试? - 什么项目适合做自动化测试? - 测试运行器 karma - 测试框架 jasmine ### 为什么要进行自动化测试? 1. 正确性:验证代码的正确性...

945996501
2018/06/26
0
0
Karma和Jasmine自动化单元测试

转自http://blog.fens.me/nodejs-karma-jasmine/ 前言 在Java领域,Apache, Spring, JBoss 三大社区的开源库,包罗万象,但每个库都在其领域中都鹤立鸡群。而Nodejs中各种各样的开源库,却让...

山里来的鱼
2015/08/05
1K
2
搭建和学习Angularjs官方示例angular-phonecat项目

一、简介 最近需要学习angularjs,可是官方的网站在中国不是很友好,访问不是很方便。 还好找到了下面的一个更齐全点的官方示例angular-phonecat项目的教程网站PhoneCat 入门教程 App 导言 ...

dhb_oschina
2016/04/22
2.3K
0
JavaScript 单元测试框架:Jasmine 初探

简介 随着互联网浪潮的逐渐兴起,各种基于互联网的云战略也不断涌现,各个公司对云平台的理解和实现不尽相同,而云+端的模式越来越多受到关注。其中的端可以理解为终端用户手中的各种终端,包...

RainyZou
2016/03/04
261
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 笔记之Spring cloud config client

观察者模式它的数据的变化是被动的。 观察者模式在java中的实现: package com.hxq.springcloud.springcloudconfigclient;import org.springframework.context.ApplicationListener;i...

xiaoxiao_go
44分钟前
4
0
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
今天
4
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
7
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部