From 45a611a061c9f3a7074f8cb2915fe8765a2d4a55 Mon Sep 17 00:00:00 2001 From: LongYinan Date: Mon, 19 Dec 2016 15:36:07 +0800 Subject: [PATCH] feat(ajax-helper): update MockXMLHttpRequest upload property behavior Observable.ajax would set xhr.upload.onprogress when progressSubscriber is not empty. And if xhr.upload.onprogress was set after xhr.open, it would not be fired. So ajax-helper should initial an empty upload object, and freeze the setter after open method called. --- spec/helpers/ajax-helper.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spec/helpers/ajax-helper.ts b/spec/helpers/ajax-helper.ts index 60ae10113a9..9670ea1f2c6 100644 --- a/spec/helpers/ajax-helper.ts +++ b/spec/helpers/ajax-helper.ts @@ -139,7 +139,7 @@ export class MockXMLHttpRequest { onerror: (e: ErrorEvent) => any; onprogress: (e: ProgressEvent) => any; ontimeout: (e: ProgressEvent) => any; - upload: XMLHttpRequestUpload; + upload: XMLHttpRequestUpload = Object.create(null); constructor() { this.previousRequest = MockXMLHttpRequest.recentRequest; @@ -158,6 +158,12 @@ export class MockXMLHttpRequest { this.password = password; this.readyState = 1; this.triggerEvent('readyStateChange'); + const originalProgressHandler = this.upload.onprogress; + Object.defineProperty(this.upload, 'progress', { + get() { + return originalProgressHandler; + } + }); } setRequestHeader(key: any, value: any): void {