参考
ECMAScript 6 入门。
ESlint是一个javascript代码审查框架。
Testem
A test runner that makes Javascript unit testing fun.
创建一个testem的测试目录,然后安装testem:
$ cd /opt && mkdir testem && cd /opt/testem
$ npm install testem -g
$ testem
屏幕会提示testem已经运行,监听端口是7357。这时,testem已经准备好,等待接受浏览器的访问。屏幕显示:
waiting for browsers...
用浏览器访问地址http://c7302.ambari.apache.org:7357
。这时屏幕提示:
chrome 61.0
0/0 √
这表明测试已经完成,只是工作目录下没有任何.js
文件,所以测试数量是0。 现在打开另外的终端窗口,进入/opt/testem
目录,在目录下编辑一个hello_spec.js
的文件,内容是:
describe('hello', function(){
it('should say hello', function(){
expect(hello()).toBe('hello world');
});
});
这是一个Jasmine格式的测试脚本。Testem会自动加载工作目录下的js文件。所以屏幕显示:
chrome 61.0
0/1 ×
hello returns "hello world"
× ReferenceError: hello is not defined
这说明已经运行了测试,但被测试的对象hello
没有定义。现在编辑一个hello.js
文件,内容是:
function hello(){
return "hello world";
}
Testem又一次自动检测到了目录下的文件变化,并运行了测试。这次显示:
chrome 61.0
1/1 √
√ 1 tests complete.
QUnit
QUnit: A JavaScript Unit Testing framework. 下面是快速入门。
在浏览器中
windows下编辑一个qunit.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>QUnit Example</title>
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.4.0.css">
</head>
<body>
<div></div>
<div></div>
<script src="https://code.jquery.com/qunit/qunit-2.4.0.js"></script>
<script src="tests.js"></script>
</body>
</html>
同一目录下编辑一个js文件tests.js
,内容是:
QUnit.test( "hello test", function( assert ) {
assert.ok( 1 == "1", "Passed!" );
});
然后用浏览器打开qunit.html
,可以看到浏览器中显示:
1 tests completed in 5 milliseconds, with 0 failed, 0 skipped, and 0 todo.
1 assertions of 1 passed, 0 failed.
在Node中
linux下安装:
$ npm install -g qunitjs
$ mkdir -p /opt/qunit/test
在/opt/qunit/test
目录下创建qunit.html
和tests.js
,内容如上一节。然后运行:
$ cd /opt/quinit
$ qunit
TAP version 13
ok 1 hello test
1..1
# pass 1
# skip 0
# todo 0
# fail 0
qunit默认加载test
目录下的测试。也可以用下面的方式指定测试的文件:
$ qunit 'test/*.js'
断言(assert)
cookbook原文
任何单元测试的基本要素都是断言。测试的作者需要表达预期的结果,并将单元测试框架与实现产生的实际值进行比较。
QUnit内置了三种断言:ok、equal、deepEqual。
- ok( truthy [, message ] ), 判断
truthy
的值是否为true
- equal( actual, expected [, message ] ) ,判断
actual == expected
是否为true
- deepEqual( actual, expected [, message ] ),判断
actual === expected
是否为true
equal
断言的例子:
QUnit.test( "equal test", function( assert ) {
assert.equal( 0, 0, "Zero, Zero; equal succeeds" );
assert.equal( "", 0, "Empty, Zero; equal succeeds" );
assert.equal( "", "", "Empty, Empty; equal succeeds" );
assert.equal( 0, false, "Zero, false; equal succeeds" );
assert.equal( "three", 3, "Three, 3; equal fails" );
assert.equal( null, false, "null, false; equal fails" );
});