Skip to content

Commit

Permalink
docs: edit copy for tick() in testing and api docs (angular#35697)
Browse files Browse the repository at this point in the history
  • Loading branch information
kapunahelewong authored and iRealNirmal committed Jun 4, 2021
1 parent 2d2596e commit a5044dc
Showing 1 changed file with 41 additions and 24 deletions.
65 changes: 41 additions & 24 deletions packages/core/testing/src/fake_async.ts
Expand Up @@ -26,21 +26,25 @@ export function resetFakeAsyncZone(): void {
}

/**
* Wraps a function to be executed in the fakeAsync zone:
* - microtasks are manually executed by calling `flushMicrotasks()`,
* - timers are synchronous, `tick()` simulates the asynchronous passage of time.
* Wraps a function to be executed in the `fakeAsync` zone:
* - Microtasks are manually executed by calling `flushMicrotasks()`.
* - Timers are synchronous; `tick()` simulates the asynchronous passage of time.
*
* If there are any pending timers at the end of the function, an exception will be thrown.
* If there are any pending timers at the end of the function, an exception is thrown.
*
* Can be used to wrap inject() calls.
* Can be used to wrap `inject()` calls.
*
* @param fn The function that you want to wrap in the `fakeAysnc` zone.
*
* @usageNotes
* ### Example
*
* {@example core/testing/ts/fake_async.ts region='basic'}
*
* @param fn
* @returns The function wrapped to be executed in the fakeAsync zone
*
* @returns The function wrapped to be executed in the `fakeAsync` zone.
* Any arguments passed when calling this returned function will be passed through to the `fn`
* function in the parameters when it is called.
*
* @publicApi
*/
Expand All @@ -52,23 +56,36 @@ export function fakeAsync(fn: Function): (...args: any[]) => any {
}

/**
* Simulates the asynchronous passage of time for the timers in the fakeAsync zone.
* Simulates the asynchronous passage of time for the timers in the `fakeAsync` zone.
*
* The microtasks queue is drained at the very start of this function and after any timer callback
* has been executed.
*
* @param millis The number of milliseconds to advance the virtual timer.
* @param tickOptions The options to pass to the `tick()` function.
*
* @usageNotes
*
* The `tick()` option is a flag called `processNewMacroTasksSynchronously`,
* which determines whether or not to invoke new macroTasks.
*
* If you provide a `tickOptions` object, but do not specify a
* `processNewMacroTasksSynchronously` property (`tick(100, {})`),
* then `processNewMacroTasksSynchronously` defaults to true.
*
* If you omit the `tickOptions` parameter (`tick(100))`), then
* `tickOptions` defaults to `{processNewMacroTasksSynchronously: true}`.
*
* ### Example
*
* {@example core/testing/ts/fake_async.ts region='basic'}
*
* @param millis, the number of millisecond to advance the virtual timer
* @param tickOptions, the options of tick with a flag called
* processNewMacroTasksSynchronously, whether to invoke the new macroTasks, by default is
* false, means the new macroTasks will be invoked
*
* For example,
* The following example includes a nested timeout (new macroTask), and
* the `tickOptions` parameter is allowed to default. In this case,
* `processNewMacroTasksSynchronously` defaults to true, and the nested
* function is executed on each tick.
*
* ```
* it ('test with nested setTimeout', fakeAsync(() => {
* let nestedTimeoutInvoked = false;
* function funcWithNestedTimeout() {
Expand All @@ -80,10 +97,12 @@ export function fakeAsync(fn: Function): (...args: any[]) => any {
* tick();
* expect(nestedTimeoutInvoked).toBe(true);
* }));
* ```
*
* in this case, we have a nested timeout (new macroTask), when we tick, both the
* funcWithNestedTimeout and the nested timeout both will be invoked.
* In the following case, `processNewMacroTasksSynchronously` is explicitly
* set to false, so the nested timeout function is not invoked.
*
* ```
* it ('test with nested setTimeout', fakeAsync(() => {
* let nestedTimeoutInvoked = false;
* function funcWithNestedTimeout() {
Expand All @@ -95,9 +114,7 @@ export function fakeAsync(fn: Function): (...args: any[]) => any {
* tick(0, {processNewMacroTasksSynchronously: false});
* expect(nestedTimeoutInvoked).toBe(false);
* }));
*
* if we pass the tickOptions with processNewMacroTasksSynchronously to be false, the nested timeout
* will not be invoked.
* ```
*
*
* @publicApi
Expand All @@ -113,12 +130,12 @@ export function tick(
}

/**
* Simulates the asynchronous passage of time for the timers in the fakeAsync zone by
* draining the macrotask queue until it is empty. The returned value is the milliseconds
* of time that would have been elapsed.
* Simulates the asynchronous passage of time for the timers in the `fakeAsync` zone by
* draining the macrotask queue until it is empty.
*
* @param maxTurns
* @returns The simulated time elapsed, in millis.
* @param maxTurns The maximum number of times the scheduler attempts to clear its queue before
* throwing an error.
* @returns The simulated time elapsed, in milliseconds.
*
* @publicApi
*/
Expand Down

0 comments on commit a5044dc

Please sign in to comment.