我有一個控制器功能,看起來像:
$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