'homecntrl'不是函数,在angularjs

时间:2015-12-20 07:48:40

标签: javascript angularjs angularjs-directive jasmine karma-jasmine

我正在尝试测试我的控制器。我能够在角度js中制作简单的控制器并能够在线测试控制器。这是我的代码

http://plnkr.co/edit/xzvhXHPoUdulOM9clOkQ?p=preview

控制器代码

(function(){
  'use strict';
  angular.module('app.home').controller('homeCntrl',homeCntrl);

  function homeCntrl(){
    var home=this;
    home.clickbtn=function(){

      home.message='test';
      alert(home.message)
    }
  }
})();

但是当我在 pc 中测试时,它没有运行并且出现此错误

**Argument 'homecntrl' is not a function, got undefined
        http://errors.angularjs.org/1.4.8/ng/areq?p0=homecntrl&p1=not%20a%20function%2C%20got%20undefined
            at /Users/naveenkumar/Documents/ionic_work/SimpleDemo/bower_components/angular/angular.js:68:12**

这是我的测试

的代码
(function(){

    'use strict'
    describe('http controller test', function() {

        var $rootScope,
            $scope,
            controller,
            $q,
            $httpBackend;

        beforeEach(function() {
            module('app');

            inject(function($injector) {
                $rootScope = $injector.get('$rootScope');
                $scope = $rootScope.$new();
                controller = $injector.get('$controller')('homecntrl', {
                    $scope: $scope
                })


            })
        })




        describe('Init value', function() {
            it('check name value', function() {
                expect(controller.message).toBeUndefined();
            })

        })

        it('it should be true', function() {
            expect(true).toBeTruthy();

        })
    })


})()

我可以在线测试但无法在电脑上测试

这是我的电脑代码 https://dl.dropbox.com/s/no901z41bza7osm/SimpleDemo.zip?dl=0

请下载并转到项目目录并编写 npm install

1 个答案:

答案 0 :(得分:0)

您应该将控制器名称homeCntrl更新为homecntrl

(function(){
  'use strict';
  angular.module('app.home').controller('homecntrl',homeCntrl);

  function homecntrl(){
    var home=this;
    home.clickbtn=function(){

      home.message='test';
      alert(home.message)
    }
  }
})();

这将是有效的。