244 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			244 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * This source code is licensed under the MIT license found in the
							 | 
						||
| 
								 | 
							
								 * LICENSE file in the root directory of this source tree.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								/// <reference types="node" />
							 | 
						||
| 
								 | 
							
								/// <reference types="jest" />
							 | 
						||
| 
								 | 
							
								import { Script } from 'vm';
							 | 
						||
| 
								 | 
							
								import { Circus, Config, Global } from '@jest/types';
							 | 
						||
| 
								 | 
							
								import jestMock, { ModuleMocker } from 'jest-mock';
							 | 
						||
| 
								 | 
							
								import { ScriptTransformer } from '@jest/transform';
							 | 
						||
| 
								 | 
							
								import { JestFakeTimers as FakeTimers } from '@jest/fake-timers';
							 | 
						||
| 
								 | 
							
								declare type JestMockFn = typeof jestMock.fn;
							 | 
						||
| 
								 | 
							
								declare type JestMockSpyOn = typeof jestMock.spyOn;
							 | 
						||
| 
								 | 
							
								export declare type EnvironmentContext = Partial<{
							 | 
						||
| 
								 | 
							
								    console: Console;
							 | 
						||
| 
								 | 
							
								    docblockPragmas: {
							 | 
						||
| 
								 | 
							
								        [key: string]: string | Array<string>;
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    testPath: Config.Path;
							 | 
						||
| 
								 | 
							
								}>;
							 | 
						||
| 
								 | 
							
								declare type ModuleWrapper = (...args: Array<unknown>) => unknown;
							 | 
						||
| 
								 | 
							
								export declare class JestEnvironment {
							 | 
						||
| 
								 | 
							
								    constructor(config: Config.ProjectConfig, context?: EnvironmentContext);
							 | 
						||
| 
								 | 
							
								    global: Global.Global;
							 | 
						||
| 
								 | 
							
								    fakeTimers: FakeTimers<unknown> | null;
							 | 
						||
| 
								 | 
							
								    moduleMocker: ModuleMocker | null;
							 | 
						||
| 
								 | 
							
								    runScript(script: Script): {
							 | 
						||
| 
								 | 
							
								        [ScriptTransformer.EVAL_RESULT_VARIABLE]: ModuleWrapper;
							 | 
						||
| 
								 | 
							
								    } | null;
							 | 
						||
| 
								 | 
							
								    setup(): Promise<void>;
							 | 
						||
| 
								 | 
							
								    teardown(): Promise<void>;
							 | 
						||
| 
								 | 
							
								    handleTestEvent?(event: Circus.Event, state: Circus.State): void;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export declare type Module = typeof module;
							 | 
						||
| 
								 | 
							
								export interface LocalModuleRequire extends NodeRequire {
							 | 
						||
| 
								 | 
							
								    requireActual(moduleName: string): unknown;
							 | 
						||
| 
								 | 
							
								    requireMock(moduleName: string): unknown;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export interface Jest {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Provides a way to add Jasmine-compatible matchers into your Jest context.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @deprecated Use `expect.extend` instead
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    addMatchers(matchers: Record<string, any>): void;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Disables automatic mocking in the module loader.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    autoMockOff(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Enables automatic mocking in the module loader.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    autoMockOn(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Clears the mock.calls and mock.instances properties of all mocks.
							 | 
						||
| 
								 | 
							
								     * Equivalent to calling .mockClear() on every mocked function.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    clearAllMocks(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Removes any pending timers from the timer system. If any timers have been
							 | 
						||
| 
								 | 
							
								     * scheduled, they will be cleared and will never have the opportunity to
							 | 
						||
| 
								 | 
							
								     * execute in the future.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    clearAllTimers(): void;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Indicates that the module system should never return a mocked version
							 | 
						||
| 
								 | 
							
								     * of the specified module, including all of the specified module's
							 | 
						||
| 
								 | 
							
								     * dependencies.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    deepUnmock(moduleName: string): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Disables automatic mocking in the module loader.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * After this method is called, all `require()`s will return the real
							 | 
						||
| 
								 | 
							
								     * versions of each module (rather than a mocked version).
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    disableAutomock(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * When using `babel-jest`, calls to mock will automatically be hoisted to
							 | 
						||
| 
								 | 
							
								     * the top of the code block. Use this method if you want to explicitly avoid
							 | 
						||
| 
								 | 
							
								     * this behavior.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    doMock(moduleName: string, moduleFactory?: () => unknown): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Indicates that the module system should never return a mocked version
							 | 
						||
| 
								 | 
							
								     * of the specified module from require() (e.g. that it should always return
							 | 
						||
| 
								 | 
							
								     * the real module).
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    dontMock(moduleName: string): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Enables automatic mocking in the module loader.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    enableAutomock(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Creates a mock function. Optionally takes a mock implementation.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    fn: JestMockFn;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Given the name of a module, use the automatic mocking system to generate a
							 | 
						||
| 
								 | 
							
								     * mocked version of the module for you.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * This is useful when you want to create a manual mock that extends the
							 | 
						||
| 
								 | 
							
								     * automatic mock's behavior.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    genMockFromModule(moduleName: string): unknown;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Determines if the given function is a mocked function.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    isMockFunction(fn: Function): fn is ReturnType<JestMockFn>;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Mocks a module with an auto-mocked version when it is being required.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    mock(moduleName: string, moduleFactory?: () => unknown, options?: {
							 | 
						||
| 
								 | 
							
								        virtual?: boolean;
							 | 
						||
| 
								 | 
							
								    }): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Returns the actual module instead of a mock, bypassing all checks on
							 | 
						||
| 
								 | 
							
								     * whether the module should receive a mock implementation or not.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    requireActual: (moduleName: string) => unknown;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Returns a mock module instead of the actual module, bypassing all checks
							 | 
						||
| 
								 | 
							
								     * on whether the module should be required normally or not.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    requireMock: (moduleName: string) => unknown;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Resets the state of all mocks.
							 | 
						||
| 
								 | 
							
								     * Equivalent to calling .mockReset() on every mocked function.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    resetAllMocks(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Resets the module registry - the cache of all required modules. This is
							 | 
						||
| 
								 | 
							
								     * useful to isolate modules where local state might conflict between tests.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @deprecated Use `jest.resetModules()`
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    resetModuleRegistry(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Resets the module registry - the cache of all required modules. This is
							 | 
						||
| 
								 | 
							
								     * useful to isolate modules where local state might conflict between tests.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    resetModules(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Restores all mocks back to their original value. Equivalent to calling
							 | 
						||
| 
								 | 
							
								     * `.mockRestore` on every mocked function.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * Beware that jest.restoreAllMocks() only works when the mock was created with
							 | 
						||
| 
								 | 
							
								     * jest.spyOn; other mocks will require you to manually restore them.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    restoreAllMocks(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Runs failed tests n-times until they pass or until the max number of
							 | 
						||
| 
								 | 
							
								     * retries is exhausted. This only works with `jest-circus`!
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    retryTimes(numRetries: number): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Exhausts tasks queued by setImmediate().
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    runAllImmediates(): void;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Exhausts the micro-task queue (usually interfaced in node via
							 | 
						||
| 
								 | 
							
								     * process.nextTick).
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    runAllTicks(): void;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Exhausts the macro-task queue (i.e., all tasks queued by setTimeout()
							 | 
						||
| 
								 | 
							
								     * and setInterval()).
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    runAllTimers(): void;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Executes only the macro-tasks that are currently pending (i.e., only the
							 | 
						||
| 
								 | 
							
								     * tasks that have been queued by setTimeout() or setInterval() up to this
							 | 
						||
| 
								 | 
							
								     * point). If any of the currently pending macro-tasks schedule new
							 | 
						||
| 
								 | 
							
								     * macro-tasks, those new tasks will not be executed by this call.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    runOnlyPendingTimers(): void;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Advances all timers by msToRun milliseconds. All pending "macro-tasks"
							 | 
						||
| 
								 | 
							
								     * that have been queued via setTimeout() or setInterval(), and would be
							 | 
						||
| 
								 | 
							
								     * executed within this timeframe will be executed.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    advanceTimersByTime(msToRun: number): void;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Executes only the macro task queue (i.e. all tasks queued by setTimeout()
							 | 
						||
| 
								 | 
							
								     * or setInterval() and setImmediate()).
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @deprecated Use `jest.advanceTimersByTime()`
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    runTimersToTime(msToRun: number): void;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Returns the number of fake timers still left to run.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    getTimerCount(): number;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Explicitly supplies the mock object that the module system should return
							 | 
						||
| 
								 | 
							
								     * for the specified module.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * Note It is recommended to use `jest.mock()` instead. The `jest.mock`
							 | 
						||
| 
								 | 
							
								     * API's second argument is a module factory instead of the expected
							 | 
						||
| 
								 | 
							
								     * exported module object.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    setMock(moduleName: string, moduleExports: unknown): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Set the default timeout interval for tests and before/after hooks in
							 | 
						||
| 
								 | 
							
								     * milliseconds.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * Note: The default timeout interval is 5 seconds if this method is not
							 | 
						||
| 
								 | 
							
								     * called.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    setTimeout(timeout: number): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Creates a mock function similar to `jest.fn` but also tracks calls to
							 | 
						||
| 
								 | 
							
								     * `object[methodName]`.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * Note: By default, jest.spyOn also calls the spied method. This is
							 | 
						||
| 
								 | 
							
								     * different behavior from most other test libraries.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    spyOn: JestMockSpyOn;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Indicates that the module system should never return a mocked version of
							 | 
						||
| 
								 | 
							
								     * the specified module from require() (e.g. that it should always return the
							 | 
						||
| 
								 | 
							
								     * real module).
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    unmock(moduleName: string): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Instructs Jest to use fake versions of the standard timer functions.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    useFakeTimers(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Instructs Jest to use the real versions of the standard timer functions.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    useRealTimers(): Jest;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * `jest.isolateModules(fn)` goes a step further than `jest.resetModules()`
							 | 
						||
| 
								 | 
							
								     * and creates a sandbox registry for the modules that are loaded inside
							 | 
						||
| 
								 | 
							
								     * the callback function. This is useful to isolate specific modules for
							 | 
						||
| 
								 | 
							
								     * every test so that local module state doesn't conflict between tests.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    isolateModules(fn: () => void): Jest;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export {};
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=index.d.ts.map
							 |