我有 angularjs 控制器,基本上如下所示
app.controller('MyCtrl', function($scope, service) {
$scope.positions = service.loadPositions(); // this calls $http internally
$scope.save = function() {
...
};
// other $scope functions here
});
现在每次我为 $scope 中的任何方法编写测试时,我都需要service.loadPositions()
像下面这样存根:
it(should 'save modified position', function($controller, service, $rootScope) {
spyOn(service, 'loadPositions').andReturn(fakeData);
var scope = $rootScope.$new();
$controller('MyCtrl', {$scope: scope});
// test stuff here
})
有什么办法可以避免每次测试中的第一次存根?我的意思是如果我已经测试过这个动作是在控制器启动时调用的,我真的不需要在每次下一个测试中存根这个。这会在每次测试中引入大量重复。
编辑
我偶然发现ngInit
,我认为我可以使用它,但似乎不推荐这样做,但我不知道为什么?