代码之家  ›  专栏  ›  技术社区  ›  Niru

Javascript单元测试模拟高度函数

  •  0
  • Niru  · 技术社区  · 6 年前

    我正在尝试编写一个单元测试来测试视口功能。要确定视口,我正在使用以下函数:

    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];
     } 
    

    我一直收到错误:$(…)。高度不是一个函数

    然而,这种在其他对象上定义函数的方法似乎可行。模拟此窗口函数时是否缺少一些内容?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   Niru    6 年前

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

    mockedWindow = {
        screenY: () => {return windowTop;},
        height: () => {return windowBottom;}
    };
    
    myStub['$'] = (element) => {
        if (element === window.document) {
            return [mockedDocument];
        } else if(element === window) {
            return mockedWindow;
        }
    };