Javascript NaN阻止运行角度单元测试

时间:2016-04-06 17:24:22

标签: javascript angularjs unit-testing

我正在尝试测试一个指令但是当我模拟指令时,指令中间的一行会运行一个错误。这阻止了我的测试运行

$scope.getIterations = function (its) {
        return new Array(its);
    };

返回

 RangeError: Invalid array length

因为参数返回 NaN ,这是有道理的。

我想我可以打电话      var its = [1,2,3];      $ scope.getIterations(its)

在beforeEach中,但由于错误代码返回相同的内容而没有任何区别。

也许我误解了这段代码,但我不知道如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

它似乎与new有关。如果您尝试实例化一个新数组,那么尝试使用Array Literal而不是构造函数实例化您的数组:

$scope.getIterations = function (its) {
        return [its];
};

但正如其他人所指出的那样,它还不清楚你想要返回什么,所以如果它是一个数组。你可以return its;

答案 1 :(得分:1)

异常非常自我解释:您在new Array() expects variadic arguments as items to insert or a length to pad时传递Array

$scope.getIterations = function(its) {
    return new Array(its.length);
};

目前还不清楚你在这里尝试做什么......好像你只是想按原样返回论点:

$scope.getIterations = function(its) {
    return its;
};

答案 2 :(得分:1)

数组构造采用逗号分隔的值,这些值将成为数组的元素,但有一个例外,如果它只有一个数字id,它将生成那么多长度的数组,其中未定义为元素。

new Array("a") // ["a"]
new Array("a","b")//["a","b"]
new Array(3,2) //[3,2]
new Array(3) //[undefined x 3]

在你的情况下,如果它的值是一个数组,你可以自己返回变量。

  

返回它;

相关问题