Тестирование прокрутки в Vue JS - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь написать тест, чтобы проверить, является ли переменная истинной или ложной на основе позиции прокрутки. Эта функция тестируется и запускается в window.addEventListener ("scroll", this.onScroll); при монтировании.

onScroll() {
      this.currentScrollPosition =
        window.pageYOffset || document.documentElement.scrollTop;
      if (this.currentScrollPosition < 0) {
        return;
      }
      if (Math.abs(this.currentScrollPosition - this.lastScrollPosition) < 60) {
        return;
      }
      this.showTablebar = this.currentScrollPosition < this.lastScrollPosition;
      if (this.showTablebar && this.lastScrollPosition > 60) {
        this.top = 0;
      }
      if (document.documentElement.scrollTop < 60) {
        this.top = "unset";
      }
      this.lastScrollPosition = this.currentScrollPosition;
}

и это мой тест:

describe("Banner", () => {
  test("Show table should be true on first load", () => {
    const wrapper = factory();
    expect(wrapper.vm.showTablebar).toEqual(true);
  });
  test("Show table should be false if currentScrollPosition is greater then lastScrollPosition", () => {
    const wrapper = factory();
    wrapper.setData({ currentScrollPosition: 300 });
    window.pageYOffset = 200;
    wrapper.vm.onScroll();
    expect(wrapper.vm.showTablebar).toEqual(false);
    wrapper.pageYOffset = 0;
  });
  test("Show table should be true if currentScrollPosition is less then lastScrollPosition", () => {
    const wrapper = factory();
    wrapper.setData({ currentScrollPosition: 100 });
    window.pageYOffset = 300;
    wrapper.vm.onScroll();
    expect(wrapper.vm.showTablebar).toEqual(true);
    wrapper.pageYOffset = 0;
  });
});

Первый тест пройден, второй тест также пройден, но третий тест не пройден, равный false, когда он должен быть истинным.

...