AngularJS - 单元测试在初始化时调用的控制器方法

时间:2015-11-01 20:43:31

标签: angularjs unit-testing jasmine karma-jasmine angularjs-controller

在我的AngularJS控制器中,我有一个$scope.init方法在控制器初始化时被调用。 $scope.init调用$scope.loadData$scope.loadNames,每个都会向API发出HTTP GET请求以获取某些数据。

我使用$httpBackend编写了一些单元测试来模拟API响应并测试$scope.loadData$scope.loadNames。那些工作正常,但我似乎无法测试的是$scope.init方法。有没有办法模拟或存根在控制器初始化时调用的方法?这方面的最佳做法是什么?

2 个答案:

答案 0 :(得分:0)

您可以在控制器初始化后验证$scope.init中更改的范围对象是否具有正确的值。您甚至可以尝试更改这些对象的值,然后重新运行init方法,然后检查一切是否匹配

答案 1 :(得分:0)

你可以测试:

  • 控制器的状态是"初始化"

  • 后的状态
  • 验证是否调用了loadnames和loaddata(jasmine&#spysOn + toHaveBeenCalled)

  • 使用promise对象模拟loadnames / loaddata方法响应以验证您在意外情况下的行为