Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

expected a spy but got undefined?

Trying to get my head around jasmine spies, this is what my test looks like:

  $scope.switchTurns = function () {
    $scope.playerTurn = !$scope.playerTurn;
    console.log($scope.centrePileCards.length);
    if ($scope.playerTurn == 1) {
      $scope.pickCard();
    }
  }

My unit test looks like this:

it('should pick one card',function(){
    var controller = createController();
    spyOn(scope,'pickCard')
    scope.switchTurns();
    scope.playerTurn=1;
    expect(scope.pickCard()).toHaveBeenCalled();

  })

I am getting this error now:

Error : Expected a spy , but got undefined.

Suggestions?

like image 795
Pindakaas Avatar asked May 24 '15 10:05

Pindakaas


1 Answers

scope.pickCard() is result of method. In your case it is undefined. When you are using spyOn you should write:

expect(scope.pickCard).toHaveBeenCalled();

like image 107
zucker Avatar answered Sep 19 '22 18:09

zucker