我正在一个非常轻巧的系统上测试我正在为工作而构建的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

删除这些参数后面的函数调用运算符(()),您的测试函数将按预期工作。

07-24 16:04