Skip to content

Commit 38c379c

Browse files
committed
test_runner: Add jsdocs to mock.js
1 parent 3163f8d commit 38c379c

File tree

1 file changed

+83
-0
lines changed
  • lib/internal/test_runner/mock

1 file changed

+83
-0
lines changed

lib/internal/test_runner/mock/mock.js

+83
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,36 @@ class MockFunctionContext {
4545
this.#times = times;
4646
}
4747

48+
/**
49+
* Gets an array of recorded calls made to the mock function.
50+
* @returns {Array} An array of recorded calls.
51+
*/
4852
get calls() {
4953
return ArrayPrototypeSlice(this.#calls, 0);
5054
}
5155

56+
/**
57+
* Retrieves the number of times the mock function has been called.
58+
* @returns {number} The call count.
59+
*/
5260
callCount() {
5361
return this.#calls.length;
5462
}
5563

64+
/**
65+
* Sets a new implementation for the mock function.
66+
* @param {function} implementation - The new implementation for the mock function.
67+
*/
5668
mockImplementation(implementation) {
5769
validateFunction(implementation, 'implementation');
5870
this.#implementation = implementation;
5971
}
6072

73+
/**
74+
* Replaces the implementation of the function only once.
75+
* @param {function} implementation - The substitute function.
76+
* @param {number} [onCall] - The call index to be replaced.
77+
*/
6178
mockImplementationOnce(implementation, onCall) {
6279
validateFunction(implementation, 'implementation');
6380
const nextCall = this.#calls.length;
@@ -66,6 +83,9 @@ class MockFunctionContext {
6683
this.#mocks.set(call, implementation);
6784
}
6885

86+
/**
87+
* Restores the original function that was mocked.
88+
*/
6989
restore() {
7090
const { descriptor, object, original, methodName } = this.#restore;
7191

@@ -79,14 +99,25 @@ class MockFunctionContext {
7999
}
80100
}
81101

102+
/**
103+
* Resets the recorded calls to the mock function
104+
*/
82105
resetCalls() {
83106
this.#calls = [];
84107
}
85108

109+
/**
110+
* Tracks a call made to the mock function.
111+
* @param {Object} call - The call details.
112+
*/
86113
trackCall(call) {
87114
ArrayPrototypePush(this.#calls, call);
88115
}
89116

117+
/**
118+
* Gets the next implementation to use for the mock function.
119+
* @returns {Function} The next implementation.
120+
*/
90121
nextImpl() {
91122
const nextCall = this.#calls.length;
92123
const mock = this.#mocks.get(nextCall);
@@ -109,11 +140,23 @@ class MockTracker {
109140
#mocks = [];
110141
#timers;
111142

143+
/**.
144+
* Returns the mock timers of this MockTracker instance.
145+
* @returns {MockTimers} The mock timers instance.
146+
*/
112147
get timers() {
113148
this.#timers ??= new MockTimers();
114149
return this.#timers;
115150
}
116151

152+
/**
153+
* Creates a mock function tracker.
154+
* @param {function} [original] - The original function to be tracked.
155+
* @param {function} [implementation] - An optional replacement function for the original one.
156+
* @param {Object} [options] - Additional tracking options.
157+
* @param {number} [options.times=Infinity] - The maximum number of times the mock function can be called.
158+
* @returns {ProxyConstructor} The mock function tracker.
159+
*/
117160
fn(
118161
original = function() {},
119162
implementation = original,
@@ -137,6 +180,18 @@ class MockTracker {
137180
return this.#setupMock(ctx, original);
138181
}
139182

183+
/**
184+
* Creates a method tracker for a specified object or function.
185+
*
186+
* @param {(Object | Function)} objectOrFunction - The object or function containing the method to be tracked.
187+
* @param {string} methodName - The name of the method to be tracked.
188+
* @param {function} [implementation] - An optional replacement function for the original method.
189+
* @param {Object} [options] - Additional tracking options.
190+
* @param {boolean} [options.getter=false] - Indicates whether this is a getter method.
191+
* @param {boolean} [options.setter=false] - Indicates whether this is a setter method.
192+
* @param {number} [options.times=Infinity] - The maximum number of times the mock method can be called.
193+
* @returns {ProxyConstructor} The mock method tracker.
194+
*/
140195
method(
141196
objectOrFunction,
142197
methodName,
@@ -216,6 +271,17 @@ class MockTracker {
216271
return mock;
217272
}
218273

274+
/**
275+
* Mocks a getter method of an object. This is a syntax sugar for the MockTracker.method with options.getter set to true
276+
* @param {Object} object - The target object.
277+
* @param {string} methodName - The name of the getter method to be mocked.
278+
* @param {function} [implementation] - An optional replacement function for the targeted method.
279+
* @param {Object} [options] - Additional tracking options.
280+
* @param {boolean} [options.getter=true] - Indicates whether this is a getter method.
281+
* @param {boolean} [options.setter=false] - Indicates whether this is a setter method.
282+
* @param {number} [options.times=Infinity] - The maximum number of times the mock method can be called.
283+
* @returns {ProxyConstructor} The mock method tracker.
284+
*/
219285
getter(
220286
object,
221287
methodName,
@@ -244,6 +310,17 @@ class MockTracker {
244310
});
245311
}
246312

313+
/**
314+
* Mocks a setter method of an object. This function is a syntax sugar for MockTracker.method with options.setter set to true.
315+
* @param {Object} object - The target object.
316+
* @param {string} methodName - The setter method to be mocked.
317+
* @param {function} [implementation] - An optional replacement function for the targeted method.
318+
* @param {Object} [options] - Additional tracking options.
319+
* @param {boolean} [options.getter=false] - Indicates whether this is a getter method.
320+
* @param {boolean} [options.setter=true] - Indicates whether this is a setter method.
321+
* @param {number} [options.times=Infinity] - The maximum number of times the mock method can be called.
322+
* @returns {ProxyConstructor} The mock method tracker.
323+
*/
247324
setter(
248325
object,
249326
methodName,
@@ -272,12 +349,18 @@ class MockTracker {
272349
});
273350
}
274351

352+
/**
353+
* Resets the mock tracker, restoring all mocks and clearing timers.
354+
*/
275355
reset() {
276356
this.restoreAll();
277357
this.#timers?.reset();
278358
this.#mocks = [];
279359
}
280360

361+
/**
362+
* Restore all mocks created by this MockTracker instance.
363+
*/
281364
restoreAll() {
282365
for (let i = 0; i < this.#mocks.length; i++) {
283366
FunctionPrototypeCall(restore, this.#mocks[i]);

0 commit comments

Comments
 (0)