09-解决方案
18.2.2 解决方案
QUnit提供三个断言。
**ok(boolean[, message ])**
最基本的断言是 ok() ,它只有一个布尔参数。当参数为真时,断言通过;否则,失败。此外,它还接受一个字符串作为测试结果中显示的消息:
test("ok test", function() {
ok(true, "ok succeeds");
ok(false, "ok fails");
});
**equals(actual, expected[, message ])**
equals断言使用简单比较运算符( == )比较实际和预期参数。当两者相等时,断言通过;否则,失败。当该断言失败时,在测试结果中显示预期和实际值,以及指定的消息:
test("equals test", function() {
equals("", 0, "equals succeeds");
equals("three", 3, "equals fails");
});
和 ok() 相比, equals() 更易于调试失败的测试,因为导致测试失败的值很明显。
**same(actual, expected[, message ])**
same() 断言可以像 equals() 一样使用,在大部分情况下前者是更好的选择。它用更精确的比较运算符( === )代替简单比较运算符( == )。这样, undefined 不会等于 null 、0或者空串( "" )。它还比较对象的内容,所以 {key: value} 等于 {key: value} ,即使比较的两个对象标识不同。
same() 还能处理NaN、日期、正则表达式、数组和函数,而 equals() 只能检查对象标识:
test("same test", function() {
same(undefined, undefined, "same succeeds");
same("", 0, "same fails");
});
当确定不比较两个值的内容时,仍然可以使用 equals() 。一般来说, same() 是更好的选择。