我正在为角度控制器编写茉莉花测试规范。
在这里,我得到了错误 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();
}
根据您提供的信息,我可以得出的唯一结论是 jasmine.createSpy('JdRes')
回报 undefined
。
这意味着要么 jasmine.createSpy
没有 return
语句,或者它尝试返回值为的东西 undefined
。您应该检查该功能是否确实具有 return
语句,如果是,则返回值不是 undefined
。我无法告诉你什么。
当你为函数注入不同数量的项目时,也会发生这种情况 - 无论哪种方式,我相信。例如:
(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的参数。