Как симулировать onpointermove?
метод класса View
private beginSliding(event: PointerEvent): HTMLElement {
const { pointerId } = event;
const target = event.target as HTMLElement;
event.preventDefault();
target.setPointerCapture(pointerId);
target.onpointermove = (e: PointerEvent) => {
// Uncovered Line #s
let thumbName: ThumbName = 'to';
if (target.classList.contains('range-slider__thumb_from')) {
thumbName = 'from';
} else if (target.classList.contains('range-slider__thumb_to')) {
thumbName = 'to';
}
const currentPos = this.getPosOnScale(this.currentCursorPosition(e));
this.setMargins(thumbName, currentPos);
this.updateRangeSliderValues();
this.setDistanceBetweenTooltips();
// Uncovered Line #s
};
return target;
}
тест
it('private beginSliding', () => {
const moveEvent = new PointerEvent('pointermove', {
pointerId: 1,
bubbles: true,
cancelable: true,
clientX: 150,
clientY: 150,
pointerType: 'touch',
width: 20,
height: 20,
tangentialPressure: 0,
tiltX: 0,
tiltY: 0,
isPrimary: true,
});
Element.prototype.setPointerCapture = jest.fn().mockReturnValueOnce(undefined);
const view = new View('range-slider', settings);
const setMarginsSpy = jest.spyOn(view, 'setMargins');
view.to.element.dispatchEvent(moveEvent);
const result = view['beginSliding'](moveEvent);
expect(result.onpointermove).not.toBeNull();
expect(setMarginsSpy).toBeCalled(); // тест не проходит
});
тест не проходит потому что функция в target.onpointermove не выполняется, при этом предыдущий тест проходит и это показывает что onpointermove != null
ошибка
