Jest Vue 测试 - 无法测试 window.scrollTo fn()

时间:2021-03-19 22:29:55

标签: javascript vue.js jestjs

使用 PHPhotoLibrary.requestAuthorization(for: .readWrite) { status in switch status { case .notDetermined: // The user hasn't determined this app's access. case .restricted: // The system restricted this app's access. case .denied: // The user explicitly denied this app's access. case .authorized: // The user authorized this app to access Photos data. case .limited: // The user authorized this app for limited Photos access. @unknown default: fatalError() } } getBoundingClientRect 进行简单的滚动到 Element 函数,但无法获得 Jest 测试的任何迭代以获得超出 window.scrollTo 的任何覆盖范围。所有其他测试覆盖率为 0。

要测试的功能:

branch: 100

未在所有类别中提供 100% 覆盖率的 Jest 测试:

export default function scrollToEl(el) {
  let elRect = el.getBoundingClientRect();
  return window.scrollTo(
    elRect.left + document.documentElement.scrollLeft,
    elRect.top + document.documentElement.scrollTop
  );
}

如何获得全面的 100% 覆盖率? 请帮忙。

编辑 - 现在全面覆盖 100%: enter image description here

JS 函数:

我不得不将 import * as scroll from "../scrollToEl"; describe("scrollToEl test", () => { let element; let ev = jest.fn(); scroll.scrollToEl = jest.fn(() => { ev; }); beforeEach(() => { element = document.createElement("div"); }); it("should be called", () => { ev(element) expect(ev).toHaveBeenCalled(); }); }); 更改为 export default function

export const scrollToEl = function (el)

测试:

我必须简化测试才能获得 100% 的全面覆盖率。我添加并检查了 export const scrollToEl = function (el) { // ... }; ,同时在新创建的元素 window.scrollTo 上调用了实际函数。

(el)

1 个答案:

答案 0 :(得分:2)

所以,首先我对您想要 100% 代码覆盖率的目标有疑问。但这不是关于那个的问题,所以我们现在将跳过它。

为了让 Jest 不抱怨 scrollTo,你必须嘲笑它​​。

window.scrollTo = jest.fn();