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.