调用spyOn时不存在方法

时间:2015-08-05 12:01:06

标签: angularjs jasmine

我正在尝试使用Jasmine spyOn来调用angularjs控制器函数。我一直收到以下错误:

  

submit()方法不存在。

为了让它起作用,我错过了什么?

    describe('myCtrler', function() {
    beforeEach(module('myModule'));
    var scope,ctrl;
    beforeEach(inject(function($rootScope, $controller) {
      scope = $rootScope.$new();
        spyOn(scope, "submit");
      ctrl = $controller('myCtrler', {
          $scope: scope
      });
    }));
    it('controller defined', inject(function() {
        expect(ctrl).toBeDefined();
    }));
    it('controller function', function() {
        expect(submit).toBeDefined();
    });
    });
   angular.module('myModule').controller('myCtrler',function($scope){
       var vm = this;
       vm.submit = function() {
       };
     });

1 个答案:

答案 0 :(得分:1)

根据您错过将方法绑定到范围的问题。所以你需要做如下。希望能帮助到你。

it('controller function', function() {
            expect(ctrl.submit).toBeDefined();
        });