2015-10-15 100 views
0

在服務我有下面的代碼片段如何嘲笑`angular.element`

angular.element('html, body').animate({ 
     scrollTop: this.parentHeight + ... - ... 
    }, 500); 

在我的單元測試我要檢查是否正確的價值觀被賦予animate功能。但是,我怎樣才能模仿或窺探這個功能?我能想到的是這樣的:

beforeEach(() => { 
    angular.element =() => { 
     return { animate: (options) => { .. } 
    } 
}); 

或更好的(但不工作)

spyOn(angular.element('html, body'), 'animate'); 

有沒有更好的(角度)的方式來做到這一點?

回答

0

也許這樣的事情?

var element = { 
 
    animate: null, 
 
    parentHeight: 100 
 
}; 
 
spyOn(angular, 'element').andReturn(element); 
 
spyOn(element, 'animate'); 
 

 
// Your test code goes here 
 

 
expect(angular.element).toHaveBeenCalledWith('html, body'); 
 
expect(element.animate).toHaveBeenCalledWith(jasmine.objectContaining({ 
 
     scrollTop: 100 
 
    }, 500);

+0

這會工作,但你不要在這裏測試任何東西!你測試你自己的模擬(動畫)。還有一件事大多不需要測試像100和500這樣的實際參數 –

+0

@ user2978188您是否有另外一種測試方法?順便說一句,我確實需要測試「實際」參數的含義。所有參數應該是。 – FrailWords