如何模拟'mousemove'事件并在TypeScript中指定MovementX和MovementY

时间:2019-05-06 21:02:36

标签: javascript typescript jasmine mouseevent mousemove

我正在尝试为TypeScript中的“ mousemove”处理程序编写一个Jasmine测试。这是我的测试:

    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:类型为'{MovementX:number;的参数运动Y:   数; }”不能分配给“ MouseEventInit”类型的参数。
  对象文字只能指定已知属性,而'movementX'可以   类型'MouseEventInit'中不存在。

我知道即使出现编译错误,TypeScript编译器也会生成JavaScript代码。

我应该如何在TypeScript中编写'mousemove'事件模拟,这样才不会出现任何编译错误?

1 个答案:

答案 0 :(得分:1)

您的代码对我而言有效。但是,我能够重现同样的问题。通过将第二个参数强制转换为MouseEventInit对象,可以解决此问题。

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