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

发表于:2014-6-27 11:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:卡布其诺猫    来源:51Testing软件测试网采编

  在页面中我们引入了5个js文件和1个css文件。
  jasmine.js : jasmine框架的核心文件。
  jasmine-html.js : 用于网页结果输出的js文件。
  boot.js : jasmine框架的的启动脚本。值得注意的是,这个脚本的执行应该在jasmine.js加载完成之后。
  src.js : 我们的业务逻辑脚本。
  test.js : jasmine测试脚本。
  jasmine.css :控制网页结果输出的样式文件。
  我们来看看src.js文件,我们定义了一个showName的函数
  function showName(name){
  return 'my name is '+name;
  }
  我们在test.js内进行测试脚本的编写:
describe('just a test',function(){
it('test showName',function(){
var a='ck';
var exp='my name is ck';
expect(exp).toEqual(showName(a));
});
});
  浏览器端运行test.html文件,输出如下:
  这表明我们的脚本顺利通过了测试。
  我们修改test.js文件
  var exp='my name is mm';
  再次运行test.html文件,输入如下:
  可以看到jasmine把错误信息都打印了出来。
  通过这个简单例子,我们可以看到,使用jasmine来进行单元测试是非常方便的。
  5、API
  describe(string,function)
  全局函数,接收两个参数
  string:函数的描述
  function:测试组函数
  It(string,function)
  一个测试specs,接收两个参数
  string:spces的名称
  function:spces函数
  beforeEach(function)
  定义在一个describe的所有it执行前做的操作
  afterEach(function)
  定义在一个describe的所有it执行后做的操作
  toBe
  等同于===,比较变量
  toEqual
  处理变量,数组,对象等等
  toMatch
  使用正则式进行匹配
  toBeDefined
  是否已声明且赋值
  toBeUndefined
  是否未声明
  toBeNull
  是否null
  toBeTruthy
  如果转换为布尔值,是否为true
  toBeFalsy
  如果转换为布尔值,是否为false
  toContain
  数组中是否包含元素(值)。只能用于数组,不能用于对象
  toBeLessThan
  数值比较,小于
  toBeGreaterThan
  数值比较,大于
  toBeCloseTo
  数值比较时定义精度,先四舍五入后再比较
  toThrow
  检验一个函数是否会抛出一个错误
it("toThrow检验一个函数是否会抛出一个错误", function() {
var foo = function() {
return 1 + 2;
};
var bar = function() {
return a + 1;
};
expect(foo).not.toThrow();
expect(bar).toThrow();
});
  jasmine中还有一个强大的spy函数,用它可以监控函数的调用情况,因为涉及的内容比较多且文章只是起到抛砖引玉的作用,所以我就不一一列举了,大家感兴趣可以到官网进行深入了解。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号