期待一个间谍,但未定义?

Pin*_*aas 11 tdd spy jasmine angularjs karma-jasmine

试图让我的头围绕茉莉花间谍,这是我的测试看起来像:

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

我的单元测试看起来像这样:

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

  })
Run Code Online (Sandbox Code Playgroud)

我现在收到此错误:

Error : Expected a spy , but got undefined.
Run Code Online (Sandbox Code Playgroud)

建议?

zuc*_*ker 22

scope.pickCard()是方法的结果.在你的情况下它是undefined.当你使用时,spyOn你应该写:

expect(scope.pickCard).toHaveBeenCalled();