Javascript 如何模拟'angular.element`

Javascript 如何模拟'angular.element`,javascript,angularjs,unit-testing,jasmine,mocking,Javascript,Angularjs,Unit Testing,Jasmine,Mocking,在服务中,我有以下代码片段 angular.element('html, body').animate({ scrollTop: this.parentHeight + ... - ... }, 500); 在我的单元测试中,我想检查animate函数的值是否正确。但是我如何模拟或监视这个动画功能呢?我能想到这样的事情: beforeEach(() => { angular.element = () => { return { ani

在服务中,我有以下代码片段

angular.element('html, body').animate({
        scrollTop: this.parentHeight + ... - ...
    }, 500);
在我的单元测试中,我想检查
animate
函数的值是否正确。但是我如何模拟或监视这个
动画
功能呢?我能想到这样的事情:

beforeEach(() => {
    angular.element = () => {
        return { animate: (options) => { .. }
    }
});
或者更好(但不起作用)


有更好的(角度)方法吗?

也许是这样的

var元素={
动画:空,
父母身高:100
};
spyOn(角的,'元素')。andReturn(元素);
spyOn(元素“动画”);
//你的测试代码在这里
expect(angular.element).toHaveBeenCalledWith('html,body');
expect(element.animate).tohavencalledwith(jasmine.objectContaining)({
滚动顶部:100

},500);
这将起作用,但您不需要在此处测试任何内容!您可以测试自己的模拟(动画)还有一件事,主要是不需要测试实际参数,如100和100500@user2978188你有其他方法来测试这个吗?顺便说一句,我觉得无论你所说的“实际”参数是什么都需要测试。所有的参数都应该测试。
  spyOn(angular.element('html, body'), 'animate');