这是angualr karma jasmine unit test for a controller的问题的继续。我正在
错误:[$ injector:itkn]注入令牌不正确!预期的服务名称为字符串,未定义。当我在控制器构造函数中使用[]时,我得到了
错误:[$ injector:unpr]未知提供者:$ scopeProvider< - $ scope< - HomeCtrl
$controller("HomeCtrl",[{
$scope: scope
}]);

感谢您的帮助。
/// <reference path="../../_references.js" />
'use strict';
describe('Controllers: HomeCtrl', function() {
var $controller, scope;
beforeEach(module('myApp.controllers'));
beforeEach(inject(function($rootScope, $controller) {
scope = $rootScope.$new();
$controller("HomeCtrl", {
$scope: scope
});
}));
it('should has title equals to My App', function() {
expect(scope.title).toEqual('My App');
});
}
&#13;
HomeController.js是这样的:
'use strict';
angular.module('myApp.controllers')
// Path: /
.controller('HomeCtrl', ['$scope', '$location', '$window', /*'version'*/,
function ($scope, $location, $window, version)
{
$scope.$root.title = 'AngularJS SPA | Home';
//$scope.appVersion = version;
$scope.title = 'My App';
}]);
&#13;
答案 0 :(得分:2)
.controller('HomeCtrl', ['$scope', '$location', '$window', /*'version',*/
function ($scope, $location, $window)
您必须在评论后删除逗号 - 这样您就有2个以下逗号解析为未定义的值。您还必须从函数中移除version
或不与签名匹配的参数。
答案 1 :(得分:0)
实际的问题是我在控制器中有一个额外的。当我改变它时,它起作用了。 ,函数($ scope,$ timeout ....