2015-10-06 67 views
1

我正试图在我的角度应用程序中测试一个控制器。每当我打电话给$controller方法时,我都会收到一个空的对象。如何在角度测试控制器方法?

相关测试

describe("myCtrl", function() { 

beforeEach(module("myMod")); 

var myCtrl, scope; 

beforeEach(inject(function($controller, $rootScope) { 
    scope = $rootScope.$new(); 
    myCtrl = $controller('myCtrl', {$scope: scope}); 
})); 

it("$scope.compute", function() { 
    expect(myCtrl.compute(1,1,1)).toBe(1); 
}); 
}); 

控制器的相关部分:

.controller('myCtrl', ["$scope","serviceA", "serviceB", function($scope, serviceA, serviceB){ 

    $scope.compute = function compute(a, b, c) { 
     return serviceA.calc(a, b, c); 
    }; 
}]) 

每当我跑我的测试,我得到一个错误undefined is not a function

如果我在调用该方法之前调用console.log(JSON.stringify(myCtrl)),则表明myCtrl是空对象({})。

我认为我的问题是拨打电话$controller或者我需要设置不同的范围。

摘要:如何进行单元测试,以便在控制器内调用方法?

回答

0

的功能/方法不是在控制器中,但在$scope,所以它应该是:

it("$scope.compute", function() { 
    expect(scope.compute(1,1,1)).toBe(1); 
}); 
+0

谢谢。这是有道理的。 – fdsa

相关问题