QUnit Asserting Results
References:
1 . http://qunitjs.com/cookbook/#asserting_results
2 . http://www.c-point.com/javascript_tutorial/jsgrpComparison.htm
1 . http://qunitjs.com/cookbook/#asserting_results
2 . http://www.c-point.com/javascript_tutorial/jsgrpComparison.htm
QUnit 提供三種基本的assertions
- ok( truthy [, message ] )
equal( actual, expected [, message ] )
- deepEqual( actual, expected [, message ] )
1. ok ( truthy, [, message] )
這個function只需要一個參數,輸入ture
的話就會出現pass的結果,反之輸入false
就會出現fails。
範例:
ok( true, "true succeeds" );
ok( "non-empty", "non-empty string succeeds" );
ok( false, "false fails" );
ok( 0, "0 fails" );
ok( NaN, "NaN fails" );
ok( "", "empty string fails" );
ok( null, "null fails" );
ok( undefined, "undefined fails" );
});
2.equal( actual, expected [, message ] )
equal照字的意思就是去比對actual跟expected這
兩個參數的值是不是相同的 (他是利用 "==" 來做比
對,所以比對比較不是那麼嚴格),相同的化就是會
出現pass,反之就是fails。
範例:
test( "equal test", function() {
equal( 0, 0, "Zero; equal succeeds" );
equal( "", 0, "Empty, Zero; equal succeeds" );
equal( "", "", "Empty, Empty; equal succeeds" );
equal( 0, 0, "Zero, Zero; equal succeeds" );
equal( "three", 3, "Three, 3; equal fails" );
equal( null, false, "null, false; equal fails" );
});
3. deepEqual( actual, expected [, message ] )
deepEqual使用方式跟equal一樣,但是他比較actual跟
expected除了比較值之外還有比對資料型態,他利用 "==="
來做比對,例如underfined跟null,0還有空白字串( " " )是不一樣的
,但是在equal者是相同的,使用上要稍微瞭解這兩種的不同。
還有deepEqual還可以處理NaN,dates,regular expressions, array和
function,但是使用equal的話只能比對物件( the object identity)的不同。
範例:
test( "deepEqual test", function() {
var obj = { foo: "bar" };
deepEqual( obj, { foo: "bar" }, "Two objects can be the same in value" );
});
var obj = { foo: "bar" };
deepEqual( obj, { foo: "bar" }, "Two objects can be the same in value" );
});
在QUnit的官方文件中有提到使用deepEqual是比較好的選擇,畢竟他會去比較兩個值之外還會去比較資料的型態。
留言