TypeError: 'undefined' не является конструктором (оценивая "новый JdRes())
Я пишу спецификацию теста жасмина для контроллера angular.
Здесь я получаю ошибку TypeError: 'undefined' is not a constructor (evaluating 'new JdRes())
- хотя я определил ее как
JdRes = jasmine.createSpy('JdRes');
Сегмент кода в контроллере выглядит следующим образом
function (myService, $scope, $attrs, $q, $parse) {
'use strict';
var JdRes, resource;
JdRes = myService('JdRes');
resource = new JdRes();
}
Ответы
Ответ 1
На основе предоставленной вами информации единственный вывод, который я могу сделать, заключается в том, что jasmine.createSpy('JdRes')
возвращает undefined
.
Это означает, что либо jasmine.createSpy
не имеет оператора return
, либо пытается вернуть то, что имеет значение undefined
. Вы должны проверить, действительно ли функция имеет оператор return
, и если это так, его возвращаемое значение не равно undefined
. Я ничего больше не могу вам сказать.
Ответ 2
Это произойдет также, когда вы вводите другое количество элементов, чем количество аргументов функции - в любом случае, я считаю. Например:
(function () {
'use strict';
angular.module('controllers').controller('myController', MyController);
MyController.$inject = ['$scope',
'$state',
'$compile',
'aService',
'aServiceNotDefinedInConstructorArgs'];
function MyController('$scope',
'$state',
'$compile',
'aService') {
var vm = this;
...
}
Здесь разница заключается в том, что aServiceNotDefinedInConstructorArgs вводится, но не является аргументом для MyController.