在我的AngularJS控制器中,我有一个$scope.init
方法在控制器初始化时被调用。 $scope.init
调用$scope.loadData
和$scope.loadNames
,每个都会向API发出HTTP GET请求以获取某些数据。
我使用$httpBackend
编写了一些单元测试来模拟API响应并测试$scope.loadData
和$scope.loadNames
。那些工作正常,但我似乎无法测试的是$scope.init
方法。有没有办法模拟或存根在控制器初始化时调用的方法?这方面的最佳做法是什么?
答案 0 :(得分:0)
您可以在控制器初始化后验证$scope.init
中更改的范围对象是否具有正确的值。您甚至可以尝试更改这些对象的值,然后重新运行init方法,然后检查一切是否匹配
答案 1 :(得分:0)
你可以测试:
控制器的状态是"初始化"
验证是否调用了loadnames和loaddata(jasmine&#spysOn + toHaveBeenCalled)
使用promise对象模拟loadnames / loaddata方法响应以验证您在意外情况下的行为