2013-07-17 16 views
22

次は私のコントローラである:ジャスミン - 関数内で関数呼び出しを偵察する方法は?

$scope.addRangesAndSquare = function() { 
    $scope.addLeftRange(); 
    $scope.addCenterSquare(); 
    $scope.addRightRange(); 
} 

そして$scope.addRangesAndSquareが呼び出されたときに$scope.addLeftRange()があるように私は、$scope.addLeftRange()をスパイしたい:

it('expect addLeftRange to be called after calling addRangesAndSquare', function() { 
    spyOn(scope ,'addRangesAndSquare'); 
    spyOn(scope, 'addLeftRange'); 
    scope.addRangesAndSquare(); 
    expect(scope.addLeftRange).toHaveBeenCalled(); 
}); 

どのようにこれを行うことができますか?

答えて

35

spyOnジャスミンを使用すると、デフォルトではその機能が疑わしくなり、実際にはその中で何も実行されません。

それを行う必要があります
spyOn($scope, 'addRangesAndSquare').andCallThrough(); 

:あなたは別の機能をテストしたい場合は内呼び出して、あなたはそうのように、.andCallThrough()を呼び出す必要があります。

+0

ありがとうございました。また、他の2つの内部関数にスパイをコメントアウトするか、追加する必要がありました。そうしないと、エラーがスローされます。 –

+21

Jasmine 2では、 'spyOn($ scope、' addRangesAndSquare ')と.CallThrough();に変更されました。 – fracz

関連する問題