我应该为'包装器编写单元测试吗?方法

时间:2014-08-08 08:58:59

标签: javascript angularjs unit-testing angularjs-directive

我在我的指令的控制器中有功能:

$scope.getPossibleWin = function() {
    return betslipService.getPossibleWin()
}

betslipService注入控制器

现在我正在考虑如何测试$scope.getPossibleWin

  • 测试$scope.getPossibleWin调用betslipService.getPossibleWin
  • 测试$scope.getPossibleWin是否返回正确的值(但已在betslipService中测试过了!)
  • 测试$scope.getPossibleWin是否存在

封套测试的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

选项2是最好的,选项1我不太相信。我没有使用Javascript的经验所以我不确定为什么你必须验证函数是否存在(选项3)。

您可以在here找到更多相关信息,但您确实应该为此方法添加测试的原因是为了防止您将来破坏任何内容。如果您只在应用程序中使用5层深度的那个方法,那么有一天您可能会在更高层中添加代码,这会更改结果,但不会对其进行测试。或者在某种程度上,某些代码会产生副作用,这会影响代码库内容的结果。

因此我建议你为每个(相关)级别进行测试。问题我应该准确测试什么可能有一点偏好导向但我认为至少你应该做的是测试它是否返回正确的值,如上所述。

你应该测试它是否调用了特定的内部方法?你可以,但这不完全是你在单元测试中所做的事情,因为那样你就会对单元的内部工作进行测试。你不关心它是如何工作的,你只关心这个函数能给你你想要的响应。通过在单元测试中将这两者结合起来,当您决定重构内部工作时,最终会对未损坏的代码进行破坏测试。