2013-07-17 16 views
22

Quanto segue è in mio controller:Jasmine - Come spiare una chiamata di funzione all'interno di una funzione?

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

e voglio spiare $scope.addLeftRange(), in modo che quando si chiama così $scope.addRangesAndSquare è $scope.addLeftRange():

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

Come si può fare?

risposta

35

Per impostazione predefinita, quando si utilizza spyOn con gelsomino, esso prende in giro quella funzione e in realtà non esegue nulla all'interno di esso. Se si desidera verificare ulteriormente chiamate di funzione all'interno, è necessario chiamare .andCallThrough(), in questo modo:

spyOn($scope, 'addRangesAndSquare').andCallThrough(); 

che dovrebbe farlo.

+0

Grazie. Inoltre, ho dovuto commentare o aggiungere una spia alle altre due funzioni interne, altrimenti verrà generato un errore. –

+21

In Jasmine 2, è stato modificato in 'spyOn ($ scope, 'addRangesAndSquare'). And.callThrough();' – fracz

Problemi correlati