0

假设我有一个功能

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 中对这个函数有完整的代码覆盖,那就太好了,因为它不返回字符串或数字。

4

1 回答 1

1

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

于 2013-10-04T19:11:22.703 回答