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

问题描述:

在我的AngularJS控制器中,我有一个$scope.init方法,在控制器初始化时被调用。 $scope.init调用$scope.loadData$scope.loadNames,它们分别向API发出HTTP GET请求以获取一些数据。AngularJS - 单元测试初始化​​时调用的控制器方法

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

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

您可以测试:

  • 如预期控制器的状态时,它是后“初始化”

  • 验证loadnames和loaddata被调用(茉莉的spyOn + toHaveBeenCalled)

  • 发挥与承诺对象嘲讽loadnames/loaddata方法反应来验证您的在意外情况下的行为