Jasmine - 如何监视函数内的函数调用?

时间:2013-07-17 16:18:28

标签: javascript unit-testing angularjs jasmine karma-runner

以下是我的控制器:

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

我想监视$scope.addLeftRange(),以便在$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();
});

如何做到这一点?

1 个答案:

答案 0 :(得分:35)

默认情况下,当您将spyOn jasmine 一起使用时,它会嘲笑该功能,并且实际上并不执行任何内容。如果你想在其中测试更多的函数调用,你需要调用.andCallThrough(),如下所示:

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

应该这样做。