我正在尝试为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 });