单元测试 Javascript 个匿名函数
Unit testing Javascript anonymous functions
我在我的应用程序的 $scope 函数中有一些匿名函数。这些是匿名的,因为我只需要它们在页面加载时 运行 一次(它们确实如此)。在这些匿名函数内部,我将 $scope.itemSuccess
变量设置为 true 和 return;当满足某些规格时(不重要)。这些匿名函数还增加了一个 $scope.counter;
我不确定如何在 jasmine 单元测试中定位这些匿名函数。我需要确保他们正确地执行逻辑并且适当地增加计数器。
首先,您需要以某种方式访问测试中的匿名函数,因此您必须将它们分配给变量或命名它们。
执行此操作后,要测试它们,您有两个选择:将测试放在闭包(您的主函数)本身中,或者将代码添加到引用您希望测试的函数的闭包中。
不幸的是,由于显而易见的原因,第一个选项不是很好,而第二个选项会使您的 API 膨胀。但是,正如 Philip Walton 在 his blog post 中的出色解释,您可以通过在 API 中显式调出测试然后将其作为构建过程的一部分删除来使用选项二。
Philip 在他的 post 中进行了更详细的介绍,我建议您阅读它,但这里有一个快速快照可以帮助您入门:
function closure(){
// public variables here
var publicVariable1 = 1;
var publicVariable2 = 2;
return {
publicVariable1 : publicVariable1,
publicVariable2 : publicVariable2,
__tests__: {
add: add,
subtract: subtract
}
};
// private methods you do not wish to expose (but must for unit testing purposes).
function add(a,b){
return a + b;
};
function subtract(a,b){
return a - b;
}
}
我在我的应用程序的 $scope 函数中有一些匿名函数。这些是匿名的,因为我只需要它们在页面加载时 运行 一次(它们确实如此)。在这些匿名函数内部,我将 $scope.itemSuccess
变量设置为 true 和 return;当满足某些规格时(不重要)。这些匿名函数还增加了一个 $scope.counter;
我不确定如何在 jasmine 单元测试中定位这些匿名函数。我需要确保他们正确地执行逻辑并且适当地增加计数器。
首先,您需要以某种方式访问测试中的匿名函数,因此您必须将它们分配给变量或命名它们。
执行此操作后,要测试它们,您有两个选择:将测试放在闭包(您的主函数)本身中,或者将代码添加到引用您希望测试的函数的闭包中。
不幸的是,由于显而易见的原因,第一个选项不是很好,而第二个选项会使您的 API 膨胀。但是,正如 Philip Walton 在 his blog post 中的出色解释,您可以通过在 API 中显式调出测试然后将其作为构建过程的一部分删除来使用选项二。
Philip 在他的 post 中进行了更详细的介绍,我建议您阅读它,但这里有一个快速快照可以帮助您入门:
function closure(){
// public variables here
var publicVariable1 = 1;
var publicVariable2 = 2;
return {
publicVariable1 : publicVariable1,
publicVariable2 : publicVariable2,
__tests__: {
add: add,
subtract: subtract
}
};
// private methods you do not wish to expose (but must for unit testing purposes).
function add(a,b){
return a + b;
};
function subtract(a,b){
return a - b;
}
}