constructor() {
    /**
     * @private {!Map<
     *    string,
     *    shaka.test.FakeNetworkingEngine.MockedResponse>}
     */
    this.responseMap_ = new Map();

    /** @private {!Map<string, !Object<string, string>>} */
    this.headersMap_ = new Map();

    /** @private {?BufferSource} */
    this.defaultResponse_ = null;

    /** @private {?shaka.util.PublicPromise} */
    this.delayNextRequestPromise_ = null;

    /** @type {!jasmine.Spy} */
    this.configure = jasmine.createSpy('configure').and.stub();

    /** @type {!jasmine.Spy} */
    this.request = jasmine.createSpy('request')
        .and.callFake((type, request) => this.requestImpl_(type, request));

    /** @type {!jasmine.Spy} */
    this.registerResponseFilter =
        jasmine.createSpy('registerResponseFilter')
            .and.callFake((filter) => this.setResponseFilter(filter));

    /** @type {!jasmine.Spy} */
    this.unregisterResponseFilter =
        jasmine.createSpy('unregisterResponseFilter').and.callFake(
            (filter) => this.unregisterResponseFilterImpl_(filter));

    /** @private {?shaka.extern.ResponseFilter} */
    this.responseFilter_ = null;

    /** @type {!jasmine.Spy} */
    this.clearCommonAccessTokenMap =
        jasmine.createSpy('clearCommonAccessTokenMap').and.stub();

    /** @private {number} */
    this.maxUris_ = 1;

    // The prototype has already been applied; create spies for the
    // methods but still call it by default.
    spyOn(this, 'destroy').and.callThrough();
  }
A fake networking engine that returns constant data.  The request member
is a jasmine spy and can be used to check the actual calls that occurred.

@final
@struct
@extends {shaka.net.NetworkingEngine}