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方法反应来验证您的在意外情况下的行为