2016-04-06 3 views
0

Я пытаюсь проверить директиву, но когда я издеваюсь над директивой, строка в середине директивы запускает ошибку. Что мешает мои тесты запускJavascript NaN предотвращает запуск угловых модульных тестов

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

Возвращает

RangeError: Invalid array length 

Который имеет смысл в качестве аргумента его возвращает NaN.

Я понял, что могу позвонить var its = [1,2,3]; $ scope.getIterations (0)

Внутри beforeEach, но это не имело никакого значения, поскольку код ошибки возвращает то же самое.

Возможно, я неправильно понимаю этот код, но я не уверен, как обойти это для модульных тестов.

ответ

1

Исключение говорит само за себя: вы пропускании Array когда new Array() expects variadic arguments as items to insert or a length to pad:

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

Это не совсем понятно, что вы пытаетесь сделать здесь ... Кажется, как вы просто хотите возвращает аргумент как есть:

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

Кажется, это имеет отношение к new. Если вы пытаетесь создать экземпляр нового массива затем попытаться инстанцировании ваш массив литерал массива вместо конструктора:

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

, но, как уже отмечалось, неясно, что именно вы хотите, чтобы вернуться, так что, если его массив , Вы можете просто return its;.

+0

Это определенно позволяет мне запустить тест и все еще возвращает NaN. – Winnemucca

+0

если 'its = [1,2,3]' эта функция вернет '[[1,2,3]]' –

+0

@SUJEETJAISWAL, я знаю, но я думал, что, возможно, это то, что он хотел. – inspired

1

Построение массива принимает значения, разделенные запятыми, которые станут элементами массива, с тем исключением, что, если он имеет только один числовой идентификатор, он будет генерироваться массив, что много длины с undefined как его элементы.

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

в вашем случае, если значение его является массивом, вы можете вернуть эту переменную.

возвращение его;

Смежные вопросы