Reputation: 540
The following is in my controller:
$scope.addRangesAndSquare = function() {
$scope.addLeftRange();
$scope.addCenterSquare();
$scope.addRightRange();
}
And I want to spy on $scope.addLeftRange()
, so that when $scope.addRangesAndSquare
is called so is $scope.addLeftRange()
:
it('expect addLeftRange to be called after calling addRangesAndSquare', function () {
spyOn(scope ,'addRangesAndSquare');
spyOn(scope, 'addLeftRange');
scope.addRangesAndSquare();
expect(scope.addLeftRange).toHaveBeenCalled();
});
How can this be done?
Upvotes: 26
Views: 36039
Reputation: 1639
By default, when you use spyOn
with jasmine, it mocks that function and doesn't actually execute anything within it. If you want to test further function calls within, you'll need to call .andCallThrough()
, like so:
spyOn($scope, 'addRangesAndSquare').andCallThrough();
that should do it.
Upvotes: 42