错误:[$ injector:itkn]注入令牌不正确!预期的服务名称为字符串,未定义

时间:2015-07-04 05:42:09

标签: angularjs karma-jasmine

这是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;
&#13;
&#13;

HomeController.js是这样的:

&#13;
&#13;
'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;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

.controller('HomeCtrl', ['$scope', '$location', '$window', /*'version',*/
    function ($scope, $location, $window)

您必须在评论后删除逗号 - 这样您就有2个以下逗号解析为未定义的值。您还必须从函数中移除version或不与签名匹配的参数。

答案 1 :(得分:0)

实际的问题是我在控制器中有一个额外的。当我改变它时,它起作用了。 ,函数($ scope,$ timeout ....