Я пытаюсь написать тест, чтобы проверить, является ли переменная истинной или ложной на основе позиции прокрутки. Эта функция тестируется и запускается в 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, когда он должен быть истинным.