Как смоделировать событие 'mousemove' и указать motionX и MoveY в TypeScript - PullRequest
1 голос
/ 07 мая 2019

Я пытаюсь написать тест Жасмин для обработчика 'mousemove' в TypeScript.Вот мой тест:

    it('should pan', () =>
    {
        let mouseMoveEvent: MouseEvent = new MouseEvent("mousemove", { movementX: 1, movementY: 2 });
        canvas.nativeElement.dispatchEvent(mouseMoveEvent);
        fixture.detectChanges();

        expect(component.canvasManager.viewportOrigin.X).toBe(1, "expected pan on X");
        expect(component.canvasManager.viewportOrigin.Y).toBe(2, "expected pan on Y");

    });

Тест работает / проходит, но есть ошибка компиляции:

ОШИБКА в src / app / components / biq-workflow-editor/tests/biq-workflow-editor.component.canvas-manager.spec.ts(63,76): ошибка TS2345: Аргумент типа '{motionX: номер;движение Y: число;} 'нельзя назначить параметру типа' MouseEventInit '.
Литерал объекта может указывать только известные свойства, а' MoveX 'не существует в типе' MouseEventInit '.

Я понимаю, что TypeScriptКомпилятор генерирует код JavaScript, даже если есть ошибка компиляции.

Как мне написать симуляцию события 'mousemove' в TypeScript, чтобы не было ошибки компиляции?

1 Ответ

1 голос
/ 07 мая 2019

Ваш код мне подходит. Однако мне удалось воспроизвести ту же проблему. Я смог обойти его, приведя второй параметр к объекту MouseEventInit.

let mouseMoveEvent: MouseEvent = new MouseEvent("mousemove", <MouseEventInit>{ movementX: 1, movementY: 2 });

...