我正在尝试为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'事件模拟,以免出现任何编译错误?

最佳答案

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

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

07-24 17:31