博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript单元测试Unit Testing之QUnit
阅读量:6695 次
发布时间:2019-06-25

本文共 2137 字,大约阅读时间需要 7 分钟。

          是一个基于的单元测试 框架。虽然是基于JQuery但用来测试纯Javascript代码。

用来运行Javascript单元测试用例的html页面是这样的:

 
 
 
QUnit test runner
 
 
 
 
 

假设我们有如下简单的javascript代码simpleMath.js,实现基本的数学操作,阶乘,平均数。

SimpleMath = function() {
};
SimpleMath.prototype.getFactorial = function (number) {
if (number < 0) {
throw new Error("There is no factorial for negative numbers");
}
else if (number == 1 || number == 0) {
 
// If number <= 1 then number! = 1.
return 1;
} else {
 
// If number > 1 then number! = number * (number-1)!
return number * this.getFactorial(number-1);
}
}
SimpleMath.prototype.signum = function (number) {
if (number > 0)  {
return 1;
} else if (number == 0) {
return 0;
} else {
return -1;
}
}
SimpleMath.prototype.average = function (number1, number2) {
return (number1 + number2) / 2;
}

如对getFactorial函数,我们可以编写以下3种测试用例:

正数,零,负数

// Factorial testing module
module("Factorial", {
setup: function() {
this.simpleMath = new SimpleMath();
}, teardown: function() {
delete this.simpleMath;
}
});
test("calculating factorial for a positive number", function() {
equal(this.simpleMath.getFactorial(3), 6, "Factorial of three must equal six");
});
test("calculating factorial for zero", function() {
equal(this.simpleMath.getFactorial(0), 1, "Factorial of zero must equal one");
});
test("throwing an error when calculating the factorial for a negative number", function() {
raises(function() {
this.simpleMath.getFactorial(-10)
}, "There is no factorial for negative numbers ...");
});

上面的代码中,module中有setup, teardown可以让我们事前事后做一些操作,使用断言equal期望3的阶乘结果是6,如果您有接触过Java或C#平台的单元测试,应该不能理解。然后我们把2个js脚本文件引入到上面html中

<script src="src/simpleMath.js"></script>

<script src="tests/simpleMathTest.js"></script>

最终我们在浏览器中打开这个html,结果也就是显示出来了。

如上图,我们看到7个测试用例,全部有通过了,点击前2个用例,显示出断言的结果。常见的断言还有ok( truthy [, message ] ), deepEqual( actual, expected [, message ] ),如下是ok:

ok(true, "true passes");

ok(4==4, "4 must equal 4");
ok("some string", "Non-empty string passes");

QUnit也有支持异步ajax的测试方法asyncTest,由于篇幅有限,在这儿不多介绍了。写这篇文章的时候,QUnit是v1.14.0版本了。未来可能还有新版本。更多内容,请可以参考。

希望对您软件开发有帮助。

您可能感兴趣的文章:

作者:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-。

你可能感兴趣的文章
Word 2010 插入其他文件的方法
查看>>
BZOJ4766: 文艺计算姬(Prufer序列)
查看>>
ECMAScript 5 —— 单体内置对象之Global对象
查看>>
AGC 018E.Sightseeing Plan——网格路径问题观止
查看>>
174. Dungeon Game
查看>>
C语言标准库
查看>>
pip安装包
查看>>
hibernate5.x版本org.hibernate.MappingException: Unknown entity问题
查看>>
linux每日命令(18):whereis命令
查看>>
discuz的安装
查看>>
《算术探索》(高斯) 第14目
查看>>
Python模块——hashlib
查看>>
本周学习小结(18/03 - 24/03)
查看>>
猜数游戏
查看>>
ssm整合的springmvc.xml的配置
查看>>
hibernate持久化对象,
查看>>
Android笔记之引用aar
查看>>
【题解】大中小括号匹配
查看>>
JS-取出字符串中重复次数最多的字符并输出
查看>>
Windows server 2012同时进行多个会话登陆的策略设置
查看>>