我有一个控制器功能,看起来像:
$scope.clearMarkers = function(){
for(var i = 0; i < $scope.markers.length; i++){
$scope.markers[i].setMap(null);
}
$scope.markers = [];
};
我对上面看起来像单元测试:
describe('clearMarkers Test', function(){
it('should call the setMap() method on each array object inside of scope.markers and then set scope.markers to an' +
'empty array', function(){
scope.markers = [{
setMap: jasmine.createSpy('scope.markers[0]#setMap')
}, {
setMap: jasmine.createSpy('scope.markers[1]#setMap')
}, {
setMap: jasmine.createSpy('scope.markers[2]#setMap')
}];
scope.clearMarkers();
expect(scope.markers[0].setMap).toHaveBeenCalledWith(null);
expect(scope.markers[1].setMap).toHaveBeenCalledWith(null);
expect(scope.markers[2].setMap).toHaveBeenCalledWith(null);
expect(scope.markers).toEqual([]);
});
});
声称的setMap()
方法应该被称为时,以上测试就会因错误因为在$scope.clearMarkers()
中设置$scope.markers = []
也会删除我创建的间谍。
如果我在$scope.clearMarkers()
中注释掉$scope.markers = []
,那么我的setMap()
声明按预期工作。
在这种情况下我会如何保留我的间谍?
当你downvoting一个正确的答案,请解释一下你的决定。 – estus
@LloydBanks这个问题被忽视,没有任何反馈。解决方案对你有帮助吗?如果他们这样做,考虑接受一个答案。 – estus