MCPcopy
hub / github.com/jestjs/jest / _generateMock

Method _generateMock

packages/jest-mock/src/index.ts:926–962  ·  view source on GitHub ↗
(
    metadata: MockMetadata<T>,
    callbacks: Array<Function>,
    refs: Record<
      number,
      Record<string, any> | Array<unknown> | RegExp | T | Mock | undefined
    >,
  )

Source from the content-addressed store, hash-verified

924 }
925
926 private _generateMock<T>(
927 metadata: MockMetadata<T>,
928 callbacks: Array<Function>,
929 refs: Record<
930 number,
931 Record<string, any> | Array<unknown> | RegExp | T | Mock | undefined
932 >,
933 ): Mocked<T> {
934 const mock = this._makeComponent(metadata);
935 if (metadata.refID != null) {
936 refs[metadata.refID] = mock;
937 }
938
939 for (const slot of this._getSlots(metadata.members)) {
940 const slotMetadata = (metadata.members && metadata.members[slot]) || {};
941 if (slotMetadata.ref == null) {
942 mock[slot] = this._generateMock(slotMetadata, callbacks, refs);
943 } else {
944 callbacks.push(
945 (function (ref) {
946 return () => (mock[slot] = refs[ref]);
947 })(slotMetadata.ref),
948 );
949 }
950 }
951
952 if (
953 metadata.type !== 'undefined' &&
954 metadata.type !== 'null' &&
955 mock.prototype &&
956 typeof mock.prototype === 'object'
957 ) {
958 mock.prototype.constructor = mock;
959 }
960
961 return mock as Mocked<T>;
962 }
963
964 /**
965 * Check whether the given property of an object has been already replaced.

Callers 1

generateFromMetadataMethod · 0.95

Calls 2

_makeComponentMethod · 0.95
_getSlotsMethod · 0.95

Tested by

no test coverage detected