在服务中,我有以下代码段
angular.element('html, body').animate({
scrollTop: this.parentHeight + ... - ...
}, 500);
在我的单元测试中,我想检查animate
函数是否给出了正确的值。但是,我如何模拟或监视这个animate
函数?我能想到这样的事情:
beforeEach(() => {
angular.element = () => {
return { animate: (options) => { .. }
}
});
或更好(但不工作)
spyOn(angular.element('html, body'), 'animate');
有更好的(有棱角的)方法吗?
答案 0 :(得分:3)
这样的事可能吗?
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);