茉莉花 - 如何窥视功能中的一个函数调用? [英] Jasmine - How to spy on a function call within a function?

查看:121
本文介绍了茉莉花 - 如何窥视功能中的一个函数调用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是在我的控制器:

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

和我想窥探$ scope.addLeftRange(),这样,当$ scope.addRangesAndSquare被称为所以$ scope.addLeftRange()。

 它('期待addLeftRange调用addRangesAndSquare后,被称为',
       功能(){
         spyOn(范围,'addRangesAndSquare');
         spyOn(范围,'addLeftRange');
         scope.addRangesAndSquare();
         期待(scope.addLeftRange).toHaveBeenCalled();
       });


解决方案

在默认情况下,当你使用spyOn茉莉花,它嘲笑的功能,在它实际上并不执行任何命令。如果你想进一步测试函数中调用,你需要调用.andCallThrough(),像这样:

  spyOn($范围,'addRangesAndSquare')andCallThrough();

这应该这样做。

The following is in my controller:

$scope.addRangesAndSquare = function() {

        $scope.addLeftRange();
        $scope.addCenterSquare();
        $scope.addRightRange();

    }

And I want to spy on $scope.addLeftRange(), so that when $scope.addRangesAndSquare is called so is $scope.addLeftRange().

     it('expect addLeftRange to be called after calling addRangesAndSquare',
       function () {
         spyOn(scope ,'addRangesAndSquare');
         spyOn(scope, 'addLeftRange');
         scope.addRangesAndSquare();
         expect(scope.addLeftRange).toHaveBeenCalled();
       });

解决方案

by default, when you use spyOn with jasmine, it mocks that function and doesn't actually execute anything within it. If you want to test further function calls within, you'll need to call .andCallThrough(), like so:

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

that should do it.

这篇关于茉莉花 - 如何窥视功能中的一个函数调用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆