2015-10-15 103 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