我正在使用运行我的Jasmine SpecRunner的JSCover,它检查了以下代码片段:
var MyRootObject = MyRootObject || {};
我的目标是使覆盖率达到100%,但是我不确定如何最好地涵盖这种初始化MyRootObject的方法。
每个库javascript文件的开头都使用此模式,以确保文件的加载顺序不重要(并且$ .extend'ed里面的函数和变量)。
从根本上讲,问题在于,此脚本是第一次且唯一一次在SpecRunner中加载时,它仅运行此测试的一侧,而另一路径未经测试。
最佳答案
深入研究后,我发现了一个适合我的解决方案,当然,您的工作量可能会有所不同:
var MyRootObject = MyRootObject || {};
$.extend(true, MyRootObject, {...});
我已替换为:
var MyRootObject = $.extend(true, MyRootObject, {...});
在JQuery内部,如果目标(MyRootObject)为null或未定义,它将自动将函数内的目标分配为{}。通过使用外部库(我已经在使用),我不再有我不遵循的条件路径,因为它被委托给JQuery库。