2015-10-06 93 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

相關問題