使用 Jasmine 在函数内部测试函数

Testing a function inside a function with Jasmine

我有一个函数,里面有一个函数我需要能够测试内部函数是否被调用我已经尝试寻找 spyOn 的例子但没有找到任何我可以使用我正在尝试的代码测试就像

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

我希望我能做的测试是调用 InnerFunc 真的非常欢迎任何帮助

嗯,我没有看到任何明显的方法来测试是否调用了该内部函数。在上面给出的微不足道的情况下,我想获得 "A" 的 return 值是调用函数的非常有说服力的证据。

如果进行测试以确保以特定方式调用函数,则在特定条件下您必须重构代码。您可以像上面的评论那样将内部函数从另一个函数中移出。您可以像这样将内部函数传递给外部函数:

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

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

然后这样称呼它:

var res = OuterFunc(inner);

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