Javascript单元测试模拟高度函数

时间:2018-03-21 15:06:45

标签: javascript mocha sinon

我正在尝试编写一个测试视口功能的单元测试。要确定视口我正在使用这些函数:

var windowTop = ($(window).pageYOffset || $(document).scrollTop);
var windowBottom = $(window).height() + windowTop;

在测试代码中,我实现了以下内容:

var windowTop = 0;
var windowBottom = 500;
mockedWindow = {
    screenY: () => {return windowTop;},
    height: () => {return windowBottom;}
};

如果我尝试访问的元素是window:

,则返回mockedWindow
 else if(element === window) {
     return [mockedWindow];
 } 

我一直收到错误:$(...)。height不是函数

然而,这种在其他对象上定义函数的方法似乎有效。嘲笑这个窗口函数有什么我缺的吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

这里的问题是我没有为测试模拟出正确的所选对象,因此缺少功能。的代码是:

mockedWindow = {
    screenY: () => {return windowTop;},
    height: () => {return windowBottom;}
};

myStub['$'] = (element) => {
    if (element === window.document) {
        return [mockedDocument];
    } else if(element === window) {
        return mockedWindow;
    }
};