我正在一个非常轻巧的系统上测试我正在为工作而构建的javascript框架。
我创建了一个测试函数,该函数充当包装器,在try / catch中调用我正在测试的函数,以报告反馈而不会中断我的测试周期。问题是,当我故意创建错误时,我的catch不会被调用。
我的代码...
/// <summary>
/// Acts as a wrapper to allow us to perform and report the result
/// of each individual
/// test without blocking further tests.
/// </summary>
/// <param name="selector" type="String">
/// The id jQuery selector e.g #versionTests to repot feedback to.
/// </param>
/// <param name="testFunction" type="Function">
/// The test function to call.
/// </param>
test: function (selector, testFunction) {
try {
// now we are calling our own callback function
if (typeof testFunction === 'function') {
testFunction.call();
}
} catch (e) {
jQuery(selector).addClass("error").append("<p>" + e.description + "</p>");
}
}
提前致谢....
编辑..为清楚起见添加了称为的代码。
我要调用的测试函数基本上就是在调用此函数。
testEqualizeHeight: function () {
PeachUI("div.heightTest").equalizeHeight();
}
调用此.......(
this.selector
是反映jQuerys选择器的属性。)注意
'$'
上缺少的$selector.height(tallest);
equalizeHeight: function () {
/// <summary>
/// Equalizes the height of the specified element(s).
/// </summary>
var $tallest = 0, $selector = this.selector;
$selector.each(function () {
var $height = jQuery(this).height();
if ($height > $tallest) {
$tallest = $height;
}
});
// ie6 height is the same as min-height for other browsers.
if (PeachUI.browser.ie6) {
$selector.height(tallest);
} else {
$selector.css("min-height", $tallest);
}
}
最佳答案
在查看您的source code时,对我来说,您做了一件了不起的事情(最后几行):
PeachTest.test("#versionTests", PeachTest.testVersion());
PeachTest.test("#browserTests", PeachTest.testBrowser());
PeachTest.test("#isNumericTests", PeachTest.testNumeric);
PeachTest.test("#heightTests", PeachTest.testEqualizeHeight());
在这里,您将对
PeachTest.testNumeric
的引用传递给PeachTest.test
,但是您正在调用其他三个测试函数,并将这些函数返回的值传递给PeachTest.test
。删除这些参数后面的函数调用运算符(
()
),您的测试函数将按预期工作。