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

标签 javascript unit-testing angularjs jasmine karma-runner

以下内容位于我的 Controller 中:

$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();
});

如何做到这一点?

最佳答案

默认情况下,当您将 spyOnjasmine 一起使用时,它会模拟该函数,并且实际上不会执行其中的任何内容。如果您想测试其中的进一步函数调用,则需要调用 .andCallThrough(),如下所示:

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

应该可以了。

关于javascript - Jasmine - 如何监视函数内的函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17705121/

相关文章:

javascript - D3 力导向图 : Why don't the links appear and why is the simulation on the left?

javascript - 我有一组 html 形式的问题

reactjs - 有没有办法用react-test-renderer测试Chakra-ui模式对话框?

javascript - 如何将后备 js 与 Angular 模块一起使用?

javascript - 我如何做一个 sinon stub 来替换 promise ,以便响应被 mock ?

javascript - 如何使用 javascript 一次按顺序显示一个 div?

javascript - Vue.JS 为元素使用类

cocoa-touch - Xcode 4 中是否有键盘快捷键可以最大化/最小化输出窗口?

unit-testing - 我如何在 play framework 2 scala 中对 Controller 进行单元测试

javascript - 在 AngularJS 中通过 AJAX 加载数据后如何重新初始化数据表?