我正在使用运行我的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库。

09-25 20:10