使用Jasmine在函数内测试函数

时间:2015-02-04 23:18:59

标签: javascript function jasmine spyon

我有一个函数,里面有一个函数我需要能够测试内部函数被调用我试过寻找spyOn的例子但是找不到任何东西我可以使用我试图测试的代码是像

function OutterFunc(){
    function InnerFunc(){
        return "A";
    }
    var b = InnerFunc();
    return b;
}

我希望我能做的测试是已经调用了InnerFunc 任何帮助都会非常受欢迎

1 个答案:

答案 0 :(得分:1)

嗯,我没有看到任何明显的方法来测试内部函数是否被调用。在上面给出的琐碎案例中,我认为得到的回报值为" A"这个函数被调用是非常有说服力的证明。

如果测试以确保以某种方式调用函数,则在某些条件下您必须重构代码。您可以将内部函数移出另一个函数,如上面的注释中所示。您可以将内部函数传递给外部函数,如下所示:

var inner = function(){
    return 'A';
} 

function OuterFunc(fn) {
    return fn();
}

然后这样称呼它:

var res = OuterFunc(inner);

现在你可以窥探内心。还有其他可能性,但是您将不得不进行一些重构以测试内部函数。