我正在尝试为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'事件模拟,这样才不会出现任何编译错误?
答案 0 :(得分:1)
您的代码对我而言有效。但是,我能够重现同样的问题。通过将第二个参数强制转换为MouseEventInit
对象,可以解决此问题。
let mouseMoveEvent: MouseEvent = new MouseEvent("mousemove", <MouseEventInit>{ movementX: 1, movementY: 2 });