* Creates a mock function tracker. * @param {Function} [original] - The original function to be tracked. * @param {Function} [implementation] - An optional replacement function for the original one. * @param {object} [options] - Additional tracking options. * @param {number} [options.tim
(
original = function() {},
implementation = original,
options = kEmptyObject,
)
| 437 | * @returns {ProxyConstructor} The mock function tracker. |
| 438 | */ |
| 439 | fn( |
| 440 | original = function() {}, |
| 441 | implementation = original, |
| 442 | options = kEmptyObject, |
| 443 | ) { |
| 444 | if (original !== null && typeof original === 'object') { |
| 445 | options = original; |
| 446 | original = function() {}; |
| 447 | implementation = original; |
| 448 | } else if (implementation !== null && typeof implementation === 'object') { |
| 449 | options = implementation; |
| 450 | implementation = original; |
| 451 | } |
| 452 | |
| 453 | validateFunction(original, 'original'); |
| 454 | validateFunction(implementation, 'implementation'); |
| 455 | validateObject(options, 'options'); |
| 456 | const { times = Infinity } = options; |
| 457 | validateTimes(times, 'options.times'); |
| 458 | const ctx = new MockFunctionContext(implementation, { __proto__: null, original }, times); |
| 459 | return this.#setupMock(ctx, original); |
| 460 | } |
| 461 | |
| 462 | /** |
| 463 | * Creates a method tracker for a specified object or function. |
no test coverage detected