测试在Qunit中不返回值的Javascript函数

时间:2013-10-03 16:14:34

标签: javascript unit-testing jasmine qunit white-box-testing

假设我有一个功能

function f_createScriptElement(f_url) {
        var script = d[CreateElement](Script);
        script.type = "text/javascript";
        script[Src] = f_url;
        script.async = true;

        try {
            var container = ((m_videoPlayerTagId) ? d[GetElementById](m_videoPlayerTagId) : f_getAdContainerElem());
            if (container) {
                container.addEventListener("loadedmetadata", function(e) {
                    var c_width = this.videoWidth,
                        c_height = this.videoHeight,
                        v_width = this[WIDTH],
                        v_height = this[HEIGHT];

                    m_playerProperties[NS_AD_CD] = container.duration;
                    m_playerProperties[NS_AD_SZ] = c_width + "x" + c_height;
                    m_playerProperties[NS_AD_PS] = v_width + "x" + v_height;
                    m_playerProperties[NS_AD_VS] = ((container.volume === 0) ? false : true);

                }, false);

                container.parentNode.insertBefore(script, container.nextSibling);
            } else {
                return;
            }
        } catch (err) {}
    }

如果您可以告诉您要编写的相应测试用例(正面和负面)以便在QUnit中为此函数提供完整的代码覆盖率,那将是很好的,因为它不会返回字符串或数字。

1 个答案:

答案 0 :(得分:1)

由于这是一个带副作用的函数,你必须测试副作用,即将脚本元素插入DOM。要测试肯定的情况,添加一个DOM元素,这将使if(container)语句通过,并检查具有正确属性的脚本标记是否已添加到DOM。对于否定,只需运行测试并检查DOM中是否缺少脚本元素。