如何覆盖javascript代码模式|| {}

时间:2014-01-12 22:28:26

标签: javascript unit-testing jasmine code-coverage

我正在使用JSCover运行我的Jasmine SpecRunner,它检查这种类型的代码片段:

var MyRootObject = MyRootObject || {};

我的目标是将覆盖率提高到100%,但我不确定如何最好地覆盖这种初始化MyRootObject的方法。

此模式在每个库javascript文件的开头使用,以确保加载文件的顺序不重要(内部的函数和变量是$ .extend'ed)。

问题基本上是在SpecRunner中加载此脚本的第一次也是唯一一次,它只运行此测试的一侧,而另一条路径未经测试。

1 个答案:

答案 0 :(得分:1)

在挖掘之后,我找到了一个对我有用的解决方案,当然,你的里程可能会有所不同:

var MyRootObject = MyRootObject || {};
$.extend(true, MyRootObject, {...});

我已替换为:

var MyRootObject = $.extend(true, MyRootObject, {...});

在JQuery内部,如果目标(MyRootObject)为null或未定义,它会自动将函数内的目标赋值为{}。通过使用外部库(我已经使用),我不再有一个我没有遵循的条件路径,因为它被委托给JQuery库。