JavaScript的单元测试工具
作者:网络转载 发布时间:[ 2015/1/26 15:32:00 ] 推荐标签:JavaScript 单元测试工具
module ("Temperature conversion")
test("conversion to F", function(){
var actual1 = convertFromCelsiusToFahrenheit(20);
equal(actual1, 68, ?Value not correct?);
var actual2 = convertFromCelsiusToFahrenheit(30);
equal(actual2, 86, ?Value not correct?);
})
test("conversion to C", function(){
var actual1 = convertFromFahrenheitToCelsius(68);
equal(actual1, 20, ?Value not correct?);
var actual2 = convertFromFahrenheitToCelsius(86);
equal(actual2, 30, ?Value not correct?);
})
QUnit中的测试用例由test()方法来定义,逻辑包含在传递给该函数的第二个参数中。在清单6中,这两个测试被分别命名为conversion to F和conversion to C。每个测试都包含了两个断言,这些用在测试中的断言利用了equal()方法,equal()函数让你比较预期的值和被测试的函数返回的实际值。 equal()方法中的第三个参数是在失败情况下显示的信息。
还可以通过module()函数来把一些测试组织成模块。在清单6中,模块Temperature conversion拥有两个测试。
若要运行这些测试:
1. 把源代码和测试文件放入到HTML测试器中,如清单7所示.
2. 在浏览器中打开该HTML页面。
清单7. 在运行器中包含script.js和test.js
... <script type="text/javascript" src="js/script.js" kesrc="js/script.js">< /script> <script type="text/javascript" src="js/test.js" kesrc="js/test.js">< /script> ...
图1展示了QUnit在浏览器(Firefox)中显示结果的方式。
图1. QUnit结果

清单6中的断言使用了equal()方法,但这不是QUnit提供的断言,QUnit提供的其他一些断言包括了ok()和 strictEqual()。清单8给出了这些方法的运用方式。
清单8. 更多的断言
module ("Other assertion");
test("assertions", function(){
ok(true);
ok(3);
strictEqual("c", "c");
equal (3, "3");
});
ok()函数检查第一个参数为true;strictEqual()验证第一个参数与第二个严格相等。幕后实情是,strictEqual()使用了===运算符,而 equal()使用的是==运算符。
如果测试失败的话,QUnit也会提供一些有用的信息。把清单8中的代码修改成清单9中的代码,故后的一个断言会失败。
清单9. 后一个断言出现错误
module ("Other assertion");
test("assertions", function(){
ok(true);
ok(3);
strictEqual("c", "c");
strictEqual (3, "3");
});
图2展示了清单9中的代码的QUnit返回结果。
图2. QUnit结果——后一个测试失败

sales@spasvo.com