以下是我的控制器:
$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();
});
如何做到这一点?
答案 0 :(得分:35)
默认情况下,当您将spyOn
与 jasmine 一起使用时,它会嘲笑该功能,并且实际上并不执行任何内容。如果你想在其中测试更多的函数调用,你需要调用.andCallThrough()
,如下所示:
spyOn($scope, 'addRangesAndSquare').andCallThrough();
应该这样做。