我们已经为我们的 Angular 应用程序启动并运行了业力测试套件。铬的所有测试都是绿色的。现在我必须修复一个在 IE 11 上失败的测试。我得到的异常如下:
TypeError: Object doesn't support this action
at createEventWithKeycode (http://localhost:9876/_karma_webpack_/main.bundle.js:3574:5)
at Anonymous function (http://localhost:9876/_karma_webpack_/main.bundle.js:3115:13)
at Anonymous function (http://localhost:9876/_karma_webpack_/vendor.bundle.js:74994:17)
at ZoneDelegate.prototype.invoke (http://localhost:9876/_karma_webpack_/polyfills.bundle.js:10531:13)
at ProxyZoneSpec.prototype.onInvoke (http://localhost:9876/_karma_webpack_/vendor.bundle.js:26806:13)
at ZoneDelegate.prototype.invoke (http://localhost:9876/_karma_webpack_/polyfills.bundle.js:10531:13)
at Zone.prototype.run (http://localhost:9876/_karma_webpack_/polyfills.bundle.js:10283:17)
at Anonymous function (http://localhost:9876/_karma_webpack_/vendor.bundle.js:26503:13)
我的理解是,测试用例是在 angulars TestBed 类的帮助下创建一个用于测试的角度组件。使用一些神奇的代码,我们获取输入组件本身并在其上运行 keydown 事件:
inputComponent.onKeyDownInput(event);
但是当我在 IE 中运行代码时,当我尝试使用以下代码创建事件对象时,异常已经发生:
const event = new KeyboardEvent('keydown', { //This triggers the exception
bubbles: true,
cancelable: true,
shiftKey: true
});
KeyboardEvent 对象在类型文件 lib.es6.d.ts 中定义:
declare var KeyboardEvent: {
prototype: KeyboardEvent;
new(typeArg: string, eventInitDict?: KeyboardEventInit): KeyboardEvent;
readonly DOM_KEY_LOCATION_JOYSTICK: number;
readonly DOM_KEY_LOCATION_LEFT: number;
readonly DOM_KEY_LOCATION_MOBILE: number;
readonly DOM_KEY_LOCATION_NUMPAD: number;
readonly DOM_KEY_LOCATION_RIGHT: number;
readonly DOM_KEY_LOCATION_STANDARD: number;
}
有人可以说明这个问题吗?请记住,一切都在使用 chrome - 只有 IE 不正常!