test
Модуль node:test упрощает создание тестов JavaScript. Чтобы получить к нему доступ:
import test from 'node:test';
Этот модуль доступен только при использовании схемы node:. Следующий вариант работать не будет:
import test from 'node:test';
Тесты, созданные с помощью модуля test, состоят из одной функции, которая обрабатывается одним из трёх способов:
- Синхронная функция, которая считается не пройденной, если выбрасывает исключение, и пройденной в противном случае.
- Функция, возвращающая
Promise, которая считается не пройденной, еслиPromiseотклоняется, и пройденной, еслиPromiseвыполняется успешно. - Функция, принимающая функцию обратного вызова. Если первым аргументом обратного вызова передано истинное значение, тест считается не пройденным. Если первым аргументом обратного вызова передано ложное значение, тест считается пройденным. Если тестовая функция принимает функцию обратного вызова и также возвращает
Promise, тест не будет пройден.
В следующем примере показано, как писать тесты с помощью модуля test.
test('synchronous passing test', (t) => {
// This test passes because it does not throw an exception.
assert.strictEqual(1, 1);
});
test('synchronous failing test', (t) => {
// This test fails because it throws an exception.
assert.strictEqual(1, 2);
});
test('asynchronous passing test', async (t) => {
// This test passes because the Promise returned by the async
// function is settled and not rejected.
assert.strictEqual(1, 1);
});
test('asynchronous failing test', async (t) => {
// This test fails because the Promise returned by the async
// function is rejected.
assert.strictEqual(1, 2);
});
test('failing test using Promises', (t) => {
// Promises can be used directly as well.
return new Promise((resolve, reject) => {
setImmediate(() => {
reject(new Error('this will cause the test to fail'));
});
});
});
test('callback passing test', (t, done) => {
// done() is the callback function. When the setImmediate() runs, it invokes
// done() with no arguments.
setImmediate(done);
});
test('callback failing test', (t, done) => {
// When the setImmediate() runs, done() is invoked with an Error object and
// the test fails.
setImmediate(() => {
done(new Error('callback failure'));
});
});
Если какие-либо тесты не пройдены, код завершения процесса устанавливается в 1.
Использование в Deno
import * as mod from "node:test";
класс MockFunctionContext
Использование в Deno
import { MockFunctionContext } from "node:test";
Класс MockFunctionContext используется для проверки или изменения поведения имитаций, созданных с помощью API MockTracker.
Параметры типа
F extends Function Свойства
calls: Array<MockFunctionCall<F>> Геттер, возвращающий копию внутреннего массива, используемого для отслеживания вызовов имитации. Каждая запись в массиве — это объект со следующими свойствами.
Методы
callCount(): number Эта функция возвращает количество вызовов данной имитации. Она эффективнее проверки ctx.calls.length, поскольку ctx.calls — это геттер, создающий копию внутреннего массива отслеживания вызовов.
mockImplementation(implementation: F): void Эта функция используется для изменения поведения существующей имитации.
В следующем примере создаётся имитирующая функция с помощью t.mock.fn(), она вызывается, а затем её реализация заменяется другой функцией.
test('changes a mock behavior', (t) => {
let cnt = 0;
function addOne() {
cnt++;
return cnt;
}
function addTwo() {
cnt += 2;
return cnt;
}
const fn = t.mock.fn(addOne);
assert.strictEqual(fn(), 1);
fn.mock.mockImplementation(addTwo);
assert.strictEqual(fn(), 3);
assert.strictEqual(fn(), 5);
});
mockImplementationOnce(
implementation: F,
onCall?: number,
): void Эта функция используется для изменения поведения существующей имитации на один вызов. После вызова onCall имитация вернётся к поведению, которое использовалось бы, если бы mockImplementationOnce() не вызывалась.
В следующем примере создаётся имитирующая функция с помощью t.mock.fn(), она вызывается, её реализация заменяется другой функцией для следующего вызова, а затем восстанавливается предыдущее поведение.
test('changes a mock behavior once', (t) => {
let cnt = 0;
function addOne() {
cnt++;
return cnt;
}
function addTwo() {
cnt += 2;
return cnt;
}
const fn = t.mock.fn(addOne);
assert.strictEqual(fn(), 1);
fn.mock.mockImplementationOnce(addTwo);
assert.strictEqual(fn(), 3);
assert.strictEqual(fn(), 4);
});
resetCalls(): void Сбрасывает историю вызовов имитирующей функции.
restore(): void Восстанавливает исходное поведение имитирующей функции. После вызова этой функции имитацию по-прежнему можно использовать.
класс MockModuleContext
Использование в Deno
import { MockModuleContext } from "node:test";
Методы
restore(): void Восстанавливает исходную реализацию имитирующего модуля.
класс MockTimers
Использование в Deno
import { MockTimers } from "node:test";
Имитация таймеров — это широко используемый в тестировании программного обеспечения метод, позволяющий моделировать и контролировать поведение таймеров, таких как setInterval и setTimeout, не дожидаясь фактического истечения заданных интервалов времени.
API MockTimers также позволяет имитировать конструктор Date и функции setImmediate/clearImmediate.
MockTracker предоставляет экспорт timers верхнего уровня, который является экземпляром MockTimers.
Методы
[Symbol.dispose](): void Вызывает MockTimers.reset().
enable(options?: MockTimersOptions): void Включает имитацию указанных таймеров.
Примечание: При включении имитации для определённого таймера связанная с ним функция очистки также будет имитироваться неявно.
Примечание: Имитация Date повлияет на поведение имитируемых таймеров, поскольку они используют одни и те же внутренние часы.
Пример использования без задания начального времени:
import { mock } from 'node:test';
mock.timers.enable({ apis: ['setInterval', 'Date'], now: 1234 });
В приведённом выше примере включается имитация конструктора Date и таймера setInterval, а функция clearInterval имитируется неявно. Будут имитироваться только конструктор Date из globalThis, функции setInterval и clearInterval из node:timers, node:timers/promises и globalThis.
Пример использования с заданным начальным временем
import { mock } from 'node:test';
mock.timers.enable({ apis: ['Date'], now: 1000 });
Пример использования с начальным значением времени в виде объекта Date
import { mock } from 'node:test';
mock.timers.enable({ apis: ['Date'], now: new Date() });
Кроме того, можно вызвать mock.timers.enable() без параметров:
Все таймеры ('setInterval', 'clearInterval', 'Date', 'setImmediate', 'clearImmediate', 'setTimeout' и 'clearTimeout') будут имитироваться.
Функции setInterval, clearInterval, setTimeout и clearTimeout из node:timers, node:timers/promises и globalThis будут имитироваться. Конструктор Date из globalThis также будет имитироваться.
Если начальная эпоха не задана, начальная дата будет соответствовать значению 0 эпохи Unix. Это January 1st, 1970, 00:00:00 UTC. Начальную дату можно задать, передав свойство now в метод .enable(). Это значение будет использоваться как начальная дата для имитируемого объекта Date. Оно может быть положительным целым числом или другим объектом Date.
reset(): void Эта функция восстанавливает поведение по умолчанию всех имитаций, ранее созданных этим экземпляром MockTimers, и отвязывает имитации от экземпляра MockTracker.
Примечание: После завершения каждого теста эта функция вызывается для MockTracker контекста теста.
import { mock } from 'node:test';
mock.timers.reset();
runAll(): void Немедленно запускает все ожидающие имитируемые таймеры. Если объект Date также имитируется, время объекта Date будет переведено к моменту самого позднего таймера.
В приведённом ниже примере все ожидающие таймеры запускаются немедленно, и выполняются без задержки.
import assert from 'node:assert';
import { test } from 'node:test';
test('runAll functions following the given order', (context) => {
context.mock.timers.enable({ apis: ['setTimeout', 'Date'] });
const results = [];
setTimeout(() => results.push(1), 9999);
// Notice that if both timers have the same timeout,
// the order of execution is guaranteed
setTimeout(() => results.push(3), 8888);
setTimeout(() => results.push(2), 8888);
assert.deepStrictEqual(results, []);
context.mock.timers.runAll();
assert.deepStrictEqual(results, [3, 2, 1]);
// The Date object is also advanced to the furthest timer's time
assert.strictEqual(Date.now(), 9999);
});
Примечание: Функция runAll() предназначена специально для запуска таймеров в контексте имитации таймеров. Она не влияет на системные часы реального времени или настоящие таймеры за пределами среды имитации.
setTime(time: number): void Метод .setTime() позволяет вручную изменить дату имитации на другое время. Этот метод принимает только положительное целое число. Примечание: метод запустит все имитируемые таймеры, время которых предшествует новому времени. В приведённом ниже примере задаётся новое время для имитируемой даты.
import assert from 'node:assert';
import { test } from 'node:test';
test('sets the time of a date object', (context) => {
// Optionally choose what to mock
context.mock.timers.enable({ apis: ['Date'], now: 100 });
assert.strictEqual(Date.now(), 100);
// Advance in time will also advance the date
context.mock.timers.setTime(1000);
context.mock.timers.tick(200);
assert.strictEqual(Date.now(), 1200);
});
tick(milliseconds: number): void Продвигает время для всех имитируемых таймеров.
Примечание: Это отличается от поведения setTimeout в Node.js: здесь принимаются только положительные числа. В Node.js setTimeout с отрицательными числами поддерживается только для совместимости с веб-платформой.
В следующем примере имитируется функция setTimeout, а с помощью .tick продвигается время, запуская все ожидающие таймеры.
import assert from 'node:assert';
import { test } from 'node:test';
test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => {
const fn = context.mock.fn();
context.mock.timers.enable({ apis: ['setTimeout'] });
setTimeout(fn, 9999);
assert.strictEqual(fn.mock.callCount(), 0);
// Advance in time
context.mock.timers.tick(9999);
assert.strictEqual(fn.mock.callCount(), 1);
});
Кроме того, функцию .tick можно вызывать многократно
import assert from 'node:assert';
import { test } from 'node:test';
test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => {
const fn = context.mock.fn();
context.mock.timers.enable({ apis: ['setTimeout'] });
const nineSecs = 9000;
setTimeout(fn, nineSecs);
const twoSeconds = 3000;
context.mock.timers.tick(twoSeconds);
context.mock.timers.tick(twoSeconds);
context.mock.timers.tick(twoSeconds);
assert.strictEqual(fn.mock.callCount(), 1);
});
Продвижение времени с помощью .tick также продвинет время для любого объекта Date, созданного после включения имитации (если Date также настроен на имитацию).
import assert from 'node:assert';
import { test } from 'node:test';
test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => {
const fn = context.mock.fn();
context.mock.timers.enable({ apis: ['setTimeout', 'Date'] });
setTimeout(fn, 9999);
assert.strictEqual(fn.mock.callCount(), 0);
assert.strictEqual(Date.now(), 0);
// Advance in time
context.mock.timers.tick(9999);
assert.strictEqual(fn.mock.callCount(), 1);
assert.strictEqual(Date.now(), 9999);
});
класс MockTracker
Использование в Deno
import { MockTracker } from "node:test";
Класс MockTracker используется для управления функциями имитации. Модуль запуска тестов предоставляет экспорт mock верхнего уровня, являющийся экземпляром MockTracker. Для каждого теста также предоставляется собственный экземпляр MockTracker через свойство mock контекста теста.
Свойства
Методы
fn<F extends Function = NoOpFunction>(
original?: F,
options?: MockFunctionOptions,
): Mock<F> Эта функция используется для создания имитирующей функции.
В следующем примере создаётся имитирующая функция, увеличивающая счётчик на единицу при каждом вызове. Параметр times изменяет поведение имитации так, что при первых двух вызовах счётчик увеличивается на два, а не на один.
test('mocks a counting function', (t) => {
let cnt = 0;
function addOne() {
cnt++;
return cnt;
}
function addTwo() {
cnt += 2;
return cnt;
}
const fn = t.mock.fn(addOne, addTwo, { times: 2 });
assert.strictEqual(fn(), 2);
assert.strictEqual(fn(), 4);
assert.strictEqual(fn(), 5);
assert.strictEqual(fn(), 6);
});
fn<
F extends Function = NoOpFunction,
Implementation extends Function = F,
>(): Mock<F | Implementation> getter<
MockedObject extends object,
MethodName extends keyof MockedObject,
>(): Mock<() => MockedObject[MethodName]> Эта функция представляет собой синтаксический сахар для MockTracker.method, где options.getter установлено в true.
getter<
MockedObject extends object,
MethodName extends keyof MockedObject,
Implementation extends Function,
>(
object: MockedObject,
methodName: MethodName,
implementation?: Implementation,
options?: MockFunctionOptions,
): Mock<(() => MockedObject[MethodName]) | Implementation> method<
MockedObject extends object,
MethodName extends FunctionPropertyNames<MockedObject>,
>(): MockedObject[MethodName] extends Function ? Mock<MockedObject[MethodName]> : never Эта функция используется для создания имитации существующего метода объекта. В следующем примере показано, как создать имитацию существующего метода объекта.
test('spies on an object method', (t) => {
const number = {
value: 5,
subtract(a) {
return this.value - a;
},
};
t.mock.method(number, 'subtract');
assert.strictEqual(number.subtract.mock.calls.length, 0);
assert.strictEqual(number.subtract(3), 2);
assert.strictEqual(number.subtract.mock.calls.length, 1);
const call = number.subtract.mock.calls[0];
assert.deepStrictEqual(call.arguments, [3]);
assert.strictEqual(call.result, 2);
assert.strictEqual(call.error, undefined);
assert.strictEqual(call.target, undefined);
assert.strictEqual(call.this, number);
});
method<
MockedObject extends object,
MethodName extends FunctionPropertyNames<MockedObject>,
Implementation extends Function,
>(
object: MockedObject,
methodName: MethodName,
implementation: Implementation,
options?: MockFunctionOptions,
): MockedObject[MethodName] extends Function ? Mock<MockedObject[MethodName] | Implementation> : never method<MockedObject extends object>(
object: MockedObject,
methodName: keyof MockedObject,
implementation: Function,
options: MockMethodOptions,
): Mock<Function> module(
specifier: string,
options?: MockModuleOptions,
): MockModuleContext Эта функция используется для имитации экспортов модулей ECMAScript, модулей CommonJS и встроенных модулей Node.js. Ссылки на исходный модуль, полученные до создания имитации, не затрагиваются.
Доступно только при использовании флага --experimental-test-module-mocks.
reset(): void Эта функция восстанавливает поведение по умолчанию всех имитаций, ранее созданных этим MockTracker, и отвязывает их от экземпляра MockTracker. После отвязки имитации по-прежнему можно использовать, но экземпляр MockTracker больше нельзя применять для сброса их поведения или взаимодействия с ними другим способом.
После завершения каждого теста эта функция вызывается для MockTracker контекста теста. Если глобальный MockTracker используется часто, рекомендуется вызывать эту функцию вручную.
restoreAll(): void Эта функция восстанавливает поведение по умолчанию всех имитаций, ранее созданных этим MockTracker. В отличие от mock.reset(), функция mock.restoreAll() не отвязывает имитации от экземпляра MockTracker.
setter<
MockedObject extends object,
MethodName extends keyof MockedObject,
>(): Mock<(value: MockedObject[MethodName]) => void> Эта функция представляет собой синтаксический сахар для MockTracker.method, где options.setter установлено в true.
setter<
MockedObject extends object,
MethodName extends keyof MockedObject,
Implementation extends Function,
>(
object: MockedObject,
methodName: MethodName,
implementation?: Implementation,
options?: MockFunctionOptions,
): Mock<((value: MockedObject[MethodName]) => void) | Implementation> класс SuiteContext
Использование в Deno
import { SuiteContext } from "node:test";
Экземпляр SuiteContext передаётся каждой функции набора тестов для взаимодействия с исполнителем тестов. Однако конструктор SuiteContext не входит в состав API.
Свойства
filePath: string | undefined Абсолютный путь к файлу теста, создавшему текущий набор. Если файл теста импортирует дополнительные модули, создающие наборы тестов, импортированные наборы будут возвращать путь к корневому файлу теста.
name: string Имя набора тестов.
signal: AbortSignal Можно использовать для прерывания подзадач теста, если тест был прерван.
класс TestContext
Использование в Deno
import { TestContext } from "node:test";
Экземпляр TestContext передаётся каждой тестовой функции для взаимодействия с обработчиком тестов. Однако конструктор TestContext не предоставляется в составе API.
Свойства
assert: TestContextAssert Объект, содержащий методы проверки, связанные с контекстом теста. Функции верхнего уровня из модуля node:assert доступны здесь для создания планов тестирования.
Примечание: Некоторые функции из node:assert содержат проверки типов. Если вызывать их через объект assert TestContext, параметр контекста в сигнатуре тестовой функции необходимо явно типизировать (то есть снабдить параметр аннотацией типа); в противном случае компилятор TypeScript выдаст ошибку:
import { test, type TestContext } from 'node:test';
// The test function's context parameter must have a type annotation.
test('example', (t: TestContext) => {
t.assert.deepStrictEqual(actual, expected);
});
// Omitting the type annotation will result in a compilation error.
test('example', t => {
t.assert.deepStrictEqual(actual, expected); // Error: 't' needs an explicit type annotation.
});
filePath: string | undefined Абсолютный путь к файлу тестов, в котором был создан текущий тест. Если файл тестов импортирует дополнительные модули, создающие тесты, импортированные тесты будут возвращать путь к корневому файлу тестов.
fullName: string Имя теста и каждого из его предков, разделённые >.
mock: MockTracker Для каждого теста создаётся собственный экземпляр MockTracker.
name: string Имя теста.
signal: AbortSignal test('top level test', async (t) => {
await fetch('some/uri', { signal: t.signal });
});
Методы
after(
fn?: TestContextHookFn,
options?: HookOptions,
): void Эта функция используется для создания хука, который выполняется после завершения текущего теста.
afterEach(
fn?: TestContextHookFn,
options?: HookOptions,
): void Эта функция используется для создания хука, который выполняется после каждого вложенного теста текущего теста.
before(
fn?: TestContextHookFn,
options?: HookOptions,
): void Эта функция используется для создания хука, который выполняется перед вложенным тестом текущего теста.
beforeEach(
fn?: TestContextHookFn,
options?: HookOptions,
): void Эта функция используется для создания хука, который выполняется перед каждым вложенным тестом текущего теста.
diagnostic(message: string): void Эта функция используется для вывода диагностических данных. Любая диагностическая информация добавляется в конец результатов теста. Функция не возвращает значение.
test('top level test', (t) => {
t.diagnostic('A diagnostic message');
});
plan(count: number): void Используется для задания ожидаемого количества проверок и вложенных тестов, которые должны быть выполнены в рамках теста. Если число выполненных проверок и вложенных тестов не совпадёт с ожидаемым, тест завершится с ошибкой.
Чтобы отслеживать проверки, необходимо использовать функции assert из context.assert, а не импортировать их из модуля node:assert.
test('top level test', (t) => {
t.plan(2);
t.assert.ok('some relevant assertion here');
t.test('subtest', () => {});
});
При работе с асинхронным кодом можно использовать функцию plan, чтобы убедиться, что выполнено нужное количество проверок:
test('planning with streams', (t, done) => {
function* generate() {
yield 'a';
yield 'b';
yield 'c';
}
const expected = ['a', 'b', 'c'];
t.plan(expected.length);
const stream = Readable.from(generate());
stream.on('data', (chunk) => {
t.assert.strictEqual(chunk, expected.shift());
});
stream.on('end', () => {
done();
});
});
runOnly(shouldRunOnlyTests: boolean): void Если shouldRunOnlyTests имеет истинное значение, контекст теста запускает только тесты, для которых задан параметр only. В противном случае запускаются все тесты. Если Node.js запущен без параметра командной строки --test-only, эта функция ничего не делает.
test('top level test', (t) => {
// The test context can be set to run subtests with the 'only' option.
t.runOnly(true);
return Promise.all([
t.test('this subtest is now skipped'),
t.test('this subtest is run', { only: true }),
]);
});
skip(message?: string): void Эта функция помечает тест как пропущенный в выводе. Если указано message, оно будет включено в вывод. Вызов skip() не прекращает выполнение тестовой функции. Функция не возвращает значение.
test('top level test', (t) => {
// Make sure to return here as well if the test contains additional logic.
t.skip('this is skipped');
});
todo(message?: string): void Эта функция добавляет в вывод теста директиву TODO. Если указано message, оно будет включено в вывод. Вызов todo() не прекращает выполнение тестовой функции. Функция не возвращает значение.
test('top level test', (t) => {
// This test is marked as `TODO`
t.todo('this is a todo');
});
waitFor<T>(
condition: () => T,
options?: TestContextWaitForOptions,
): Promise<Awaited<T>> Этот метод периодически вызывает функцию condition, пока она не выполнится успешно или не истечёт время ожидания.
класс TestsStream
Использование в Deno
import { TestsStream } from "node:test";
При успешном вызове run() возвращает новый объект TestsStream, передающий поток событий, описывающих выполнение тестов.
Порядок генерации некоторых событий гарантированно соответствует порядку определения тестов, тогда как остальные события генерируются в порядке выполнения тестов.
Методы
addListener(
event: "test:coverage",
listener: (data: TestCoverage) => void,
): this addListener(
event: "test:complete",
listener: (data: TestComplete) => void,
): this addListener(
event: "test:dequeue",
listener: (data: TestDequeue) => void,
): this addListener(
event: "test:diagnostic",
listener: (data: DiagnosticData) => void,
): this addListener(
event: "test:enqueue",
listener: (data: TestEnqueue) => void,
): this addListener(
event: "test:fail",
listener: (data: TestFail) => void,
): this addListener(
event: "test:pass",
listener: (data: TestPass) => void,
): this addListener(
event: "test:plan",
listener: (data: TestPlan) => void,
): this addListener(
event: "test:start",
listener: (data: TestStart) => void,
): this addListener(
event: "test:stderr",
listener: (data: TestStderr) => void,
): this addListener(
event: "test:stdout",
listener: (data: TestStdout) => void,
): this addListener(
event: "test:summary",
listener: (data: TestSummary) => void,
): this addListener(
event: "test:watch:drained",
listener: () => void,
): this addListener(
event: string,
listener: (...args: any[]) => void,
): this emit(
event: "test:coverage",
data: TestCoverage,
): boolean emit(
event: "test:complete",
data: TestComplete,
): boolean emit(
event: "test:dequeue",
data: TestDequeue,
): boolean emit(
event: "test:diagnostic",
data: DiagnosticData,
): boolean emit(
event: "test:enqueue",
data: TestEnqueue,
): boolean emit(
event: "test:fail",
data: TestFail,
): boolean emit(
event: "test:pass",
data: TestPass,
): boolean emit(
event: "test:plan",
data: TestPlan,
): boolean emit(
event: "test:start",
data: TestStart,
): boolean emit(
event: "test:stderr",
data: TestStderr,
): boolean emit(
event: "test:stdout",
data: TestStdout,
): boolean emit(
event: "test:summary",
data: TestSummary,
): boolean emit(event: "test:watch:drained"): boolean emit(
event: string | symbol,
...args: any[],
): boolean on(
event: "test:coverage",
listener: (data: TestCoverage) => void,
): this on(
event: "test:complete",
listener: (data: TestComplete) => void,
): this on(
event: "test:dequeue",
listener: (data: TestDequeue) => void,
): this on(
event: "test:diagnostic",
listener: (data: DiagnosticData) => void,
): this on(
event: "test:enqueue",
listener: (data: TestEnqueue) => void,
): this on(
event: "test:fail",
listener: (data: TestFail) => void,
): this on(
event: "test:pass",
listener: (data: TestPass) => void,
): this on(
event: "test:plan",
listener: (data: TestPlan) => void,
): this on(
event: "test:start",
listener: (data: TestStart) => void,
): this on(
event: "test:stderr",
listener: (data: TestStderr) => void,
): this on(
event: "test:stdout",
listener: (data: TestStdout) => void,
): this on(
event: "test:summary",
listener: (data: TestSummary) => void,
): this on(
event: "test:watch:drained",
listener: () => void,
): this on(
event: string,
listener: (...args: any[]) => void,
): this once(
event: "test:coverage",
listener: (data: TestCoverage) => void,
): this once(
event: "test:complete",
listener: (data: TestComplete) => void,
): this once(
event: "test:dequeue",
listener: (data: TestDequeue) => void,
): this once(
event: "test:diagnostic",
listener: (data: DiagnosticData) => void,
): this once(
event: "test:enqueue",
listener: (data: TestEnqueue) => void,
): this once(
event: "test:fail",
listener: (data: TestFail) => void,
): this once(
event: "test:pass",
listener: (data: TestPass) => void,
): this once(
event: "test:plan",
listener: (data: TestPlan) => void,
): this once(
event: "test:start",
listener: (data: TestStart) => void,
): this once(
event: "test:stderr",
listener: (data: TestStderr) => void,
): this once(
event: "test:stdout",
listener: (data: TestStdout) => void,
): this once(
event: "test:summary",
listener: (data: TestSummary) => void,
): this once(
event: "test:watch:drained",
listener: () => void,
): this once(
event: string,
listener: (...args: any[]) => void,
): this prependListener(
event: "test:coverage",
listener: (data: TestCoverage) => void,
): this prependListener(
event: "test:complete",
listener: (data: TestComplete) => void,
): this prependListener(
event: "test:dequeue",
listener: (data: TestDequeue) => void,
): this prependListener(
event: "test:diagnostic",
listener: (data: DiagnosticData) => void,
): this prependListener(
event: "test:enqueue",
listener: (data: TestEnqueue) => void,
): this prependListener(
event: "test:fail",
listener: (data: TestFail) => void,
): this prependListener(
event: "test:pass",
listener: (data: TestPass) => void,
): this prependListener(
event: "test:plan",
listener: (data: TestPlan) => void,
): this prependListener(
event: "test:start",
listener: (data: TestStart) => void,
): this prependListener(
event: "test:stderr",
listener: (data: TestStderr) => void,
): this prependListener(
event: "test:stdout",
listener: (data: TestStdout) => void,
): this prependListener(
event: "test:summary",
listener: (data: TestSummary) => void,
): this prependListener(
event: "test:watch:drained",
listener: () => void,
): this prependListener(
event: string,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "test:coverage",
listener: (data: TestCoverage) => void,
): this prependOnceListener(
event: "test:complete",
listener: (data: TestComplete) => void,
): this prependOnceListener(
event: "test:dequeue",
listener: (data: TestDequeue) => void,
): this prependOnceListener(
event: "test:diagnostic",
listener: (data: DiagnosticData) => void,
): this prependOnceListener(
event: "test:enqueue",
listener: (data: TestEnqueue) => void,
): this prependOnceListener(
event: "test:fail",
listener: (data: TestFail) => void,
): this prependOnceListener(
event: "test:pass",
listener: (data: TestPass) => void,
): this prependOnceListener(
event: "test:plan",
listener: (data: TestPlan) => void,
): this prependOnceListener(
event: "test:start",
listener: (data: TestStart) => void,
): this prependOnceListener(
event: "test:stderr",
listener: (data: TestStderr) => void,
): this prependOnceListener(
event: "test:stdout",
listener: (data: TestStdout) => void,
): this prependOnceListener(
event: "test:summary",
listener: (data: TestSummary) => void,
): this prependOnceListener(
event: "test:watch:drained",
listener: () => void,
): this prependOnceListener(
event: string,
listener: (...args: any[]) => void,
): this функция after
Использование в Deno
import { after } from "node:test";
after(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создаёт хук, который выполняется после завершения набора тестов.
describe('tests', async () => {
after(() => console.log('finished running tests'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если хук использует обратные вызовы, функция обратного вызова передаётся вторым аргументом.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция afterEach
Использование в Deno
import { afterEach } from "node:test";
afterEach(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создаёт хук, который выполняется после каждого теста в текущем наборе. Хук afterEach() выполняется даже в случае сбоя теста.
describe('tests', async () => {
afterEach(() => console.log('finished running a test'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если хук использует обратные вызовы, функция обратного вызова передаётся вторым аргументом.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция assert.register
Использование в Deno
import { assert } from "node:test";
register(
name: string,
fn: (
this: TestContext,
...args: any[],
) => void,
): voidОпределяет новую функцию проверки с указанными именем и функцией. Если функция проверки с таким именем уже существует, она заменяется.
Параметры
name: string fn: (
this: TestContext,
...args: any[],
) => void Тип возвращаемого значения
void функция before
Использование в Deno
import { before } from "node:test";
before(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создает хук, который выполняется перед запуском набора тестов.
describe('tests', async () => {
before(() => console.log('about to run some test'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если хук использует обратные вызовы, функция обратного вызова передается в качестве второго аргумента.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция beforeEach
Использование в Deno
import { beforeEach } from "node:test";
beforeEach(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создает хук, который выполняется перед каждым тестом в текущем наборе тестов.
describe('tests', async () => {
beforeEach(() => console.log('about to run a test'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если хук использует обратные вызовы, функция обратного вызова передается в качестве второго аргумента.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция default
Использование в Deno
import mod from "node:test";
Перегрузка 1
default(
name?: string,
fn?: TestFn,
): Promise<void>Функция test() — это значение, импортированное из модуля test. Каждый вызов этой функции приводит к передаче сведений о тесте в TestsStream.
Объект TestContext, переданный аргументу fn, можно использовать для выполнения действий, связанных с текущим тестом. Например, можно пропустить тест, добавить дополнительные диагностические сведения или создать вложенные тесты.
test() возвращает Promise, которое выполняется после завершения теста. Если test() вызывается внутри набора тестов, оно выполняется немедленно. Для тестов верхнего уровня возвращаемое значение обычно можно игнорировать. Однако возвращаемое значение вложенных тестов следует использовать, чтобы родительский тест не завершился раньше и не отменил вложенный тест, как показано в следующем примере.
test('top level test', async (t) => {
// The setTimeout() in the following subtest would cause it to outlive its
// parent test if 'await' is removed on the next line. Once the parent test
// completes, it will cancel any outstanding subtests.
await t.test('longer running subtest', async (t) => {
return new Promise((resolve, reject) => {
setTimeout(resolve, 1000);
});
});
});
Параметр timeout можно использовать, чтобы завершить тест с ошибкой, если для его выполнения требуется больше timeout миллисекунд. Однако это ненадежный способ отмены тестов, поскольку выполняющийся тест может заблокировать поток приложения и тем самым помешать запланированной отмене.
Параметры
name: string Имя теста, отображаемое при выводе результатов тестирования. По умолчанию используется свойство name объекта fn или '<anonymous>', если у fn нет имени.
fn: TestFn Проверяемая функция. Первый аргумент этой функции — объект TestContext. Если тест использует обратные вызовы, функция обратного вызова передается в качестве второго аргумента.
Тип возвращаемого значения
Promise<void> Выполняется с результатом undefined после завершения теста или немедленно, если тест выполняется внутри набора тестов.
Перегрузка 2
default(): Promise<void>Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 3
default(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
пространство имен default
Функции
Эта функция создает хук, который выполняется после запуска набора тестов.
Эта функция создает хук, который выполняется после каждого теста в текущем наборе тестов. Хук afterEach() выполняется даже в случае сбоя теста.
Эта функция создает хук, который выполняется перед запуском набора тестов.
Эта функция создает хук, который выполняется перед каждым тестом в текущем наборе тестов.
Псевдоним для suite.
Псевдоним для test.
Сокращенная запись для пометки теста как only. Это эквивалентно вызову test с параметром options.only, установленным в true.
Примечание: shard используется для горизонтального распараллеливания запуска тестов между компьютерами или процессами и идеально подходит для крупномасштабного выполнения в различных средах. Этот режим несовместим с режимом watch, предназначенным для быстрой итерации кода с автоматическим повторным запуском тестов при изменении файлов.
Сокращенная запись для пропуска теста. Это эквивалентно вызову test с параметром options.skip, установленным в true.
Функция suite() импортируется из модуля node:test.
Сокращенная запись для пометки теста как TODO. Это эквивалентно вызову test с параметром options.todo, установленным в true.
Пространства имен
Объект, методы которого используются для настройки доступных проверок в объектах TestContext текущего процесса. По умолчанию доступны методы из node:assert и функции для тестирования снимков.
Переменные
функция default.after
Использование в Deno
import mod from "node:test";
after(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создает хук, который выполняется после запуска набора тестов.
describe('tests', async () => {
after(() => console.log('finished running tests'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если хук использует обратные вызовы, функция обратного вызова передается в качестве второго аргумента.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция default.afterEach
Использование в Deno
import mod from "node:test";
afterEach(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создает хук, который выполняется после каждого теста в текущем наборе тестов. Хук afterEach() выполняется даже в случае сбоя теста.
describe('tests', async () => {
afterEach(() => console.log('finished running a test'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если хук использует обратные вызовы, функция обратного вызова передается в качестве второго аргумента.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция default.assert.register
Использование в Deno
import mod from "node:test";
register(
name: string,
fn: (
this: TestContext,
...args: any[],
) => void,
): voidОпределяет новую функцию проверки с указанными именем и функцией. Если функция проверки с таким именем уже существует, она будет перезаписана.
Параметры
name: string fn: (
this: TestContext,
...args: any[],
) => void Тип возвращаемого значения
void функция default.before
Использование в Deno
import mod from "node:test";
before(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создает хук, который выполняется перед запуском набора тестов.
describe('tests', async () => {
before(() => console.log('about to run some test'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если хук использует обратные вызовы, функция обратного вызова передается в качестве второго аргумента.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция default.beforeEach
Использование в Deno
import mod from "node:test";
beforeEach(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создает хук, который выполняется перед каждым тестом в текущем наборе.
describe('tests', async () => {
beforeEach(() => console.log('about to run a test'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если хук использует обратные вызовы, функция обратного вызова передается в качестве второго аргумента.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция default.describe
Использование в Deno
import mod from "node:test";
Перегрузка 1
describe(): Promise<void>Псевдоним для suite.
Функция describe() импортируется из модуля node:test.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
describe(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
describe(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
пространство имен default.describe
Функции
Краткая запись для пометки набора как only. Это эквивалентно вызову describe с параметром options.only, установленным в true.
Краткая запись для пропуска набора. Это эквивалентно вызову describe с параметром options.skip, установленным в true.
Краткая запись для пометки набора как TODO. Это эквивалентно вызову describe с параметром options.todo, установленным в true.
функция default.describe.only
Использование в Deno
import mod from "node:test";
Перегрузка 1
only(): Promise<void>Краткая запись для пометки набора как only. Это эквивалентно вызову describe с параметром options.only, установленным в true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
only(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция default.describe.skip
Использование в Deno
import mod from "node:test";
Перегрузка 1
skip(): Promise<void>Краткая запись для пропуска набора. Это эквивалентно вызову describe с параметром options.skip, установленным в true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция default.describe.todo
Использование в Deno
import mod from "node:test";
Перегрузка 1
todo(): Promise<void>Краткая запись для пометки набора как TODO. Это эквивалентно вызову describe с параметром options.todo, установленным в true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция default.it
Использование в Deno
import mod from "node:test";
Перегрузка 1
it(): Promise<void>Псевдоним для test.
Функция it() импортируется из модуля node:test.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
it(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
it(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
пространство имён default.it
Функции
Краткая форма для пометки теста как only. Это то же самое, что вызвать it, установив options.only в true.
Краткая форма для пропуска теста. Это то же самое, что вызвать it, установив options.skip в true.
Краткая форма для пометки теста как TODO. Это то же самое, что вызвать it, установив options.todo в true.
функция default.it.only
Использование в Deno
import mod from "node:test";
Перегрузка 1
only(): Promise<void>Краткая форма для пометки теста как only. Это то же самое, что вызвать it, установив options.only в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
only(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
функция default.it.skip
Использование в Deno
import mod from "node:test";
Перегрузка 1
skip(): Promise<void>Краткая форма для пропуска теста. Это то же самое, что вызвать it, установив options.skip в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
функция default.it.todo
Использование в Deno
import mod from "node:test";
Перегрузка 1
todo(): Promise<void>Краткая форма для пометки теста как TODO. Это то же самое, что вызвать it, установив options.todo в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
функция default.only
Использование в Deno
import mod from "node:test";
Перегрузка 1
only(): Promise<void>Краткая форма для пометки теста как only. Это то же самое, что вызвать test, установив options.only в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
only(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
функция default.run
Использование в Deno
import mod from "node:test";
run(options?: RunOptions): TestsStreamПримечание: shard используется для горизонтального распараллеливания запуска тестов на нескольких машинах или процессах, что идеально подходит для масштабного выполнения в различных средах. Этот режим несовместим с режимом watch, предназначенным для быстрой итеративной разработки кода: тесты автоматически запускаются повторно при изменении файлов.
import { tap } from 'node:test/reporters';
import { run } from 'node:test';
import process from 'node:process';
import path from 'node:path';
run({ files: [path.resolve('./tests/test.js')] })
.compose(tap)
.pipe(process.stdout);
Параметры
options: RunOptions Параметры конфигурации для запуска тестов.
Возвращаемый тип
функция default.skip
Использование в Deno
import mod from "node:test";
Перегрузка 1
skip(): Promise<void>Сокращённая запись для пропуска теста. Эквивалентно вызову test с параметром options.skip, установленным в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
функция default.snapshot.setDefaultSnapshotSerializers
Использование в Deno
import mod from "node:test";
setDefaultSnapshotSerializers(serializers: ReadonlyArray<(value: any) => any>): voidЭта функция используется для настройки механизма сериализации по умолчанию, применяемого средством запуска тестов.
По умолчанию средство запуска тестов выполняет сериализацию, вызывая JSON.stringify(value, null, 2) для переданного значения. JSON.stringify() имеет ограничения в отношении циклических структур и поддерживаемых типов данных. Если требуется более надёжный механизм сериализации, с помощью этой функции можно указать список пользовательских сериализаторов.
Сериализаторы вызываются по очереди; результат предыдущего сериализатора передаётся следующему в качестве входных данных. Итоговый результат должен быть строкой.
Параметры
serializers: ReadonlyArray<(value: any) => any> Массив синхронных функций, используемых в качестве сериализаторов по умолчанию для тестов снимков.
Возвращаемый тип
void функция default.snapshot.setResolveSnapshotPath
Использование в Deno
import mod from "node:test";
setResolveSnapshotPath(fn: (path: string | undefined) => string): voidЭта функция задаёт пользовательский обработчик для определения расположения файла снимка, используемого при тестировании снимков. По умолчанию имя файла снимка совпадает с именем файла точки входа, к которому добавлено .snapshot.
Параметры
fn: (path: string | undefined) => string Функция для определения расположения файла снимка. Единственный аргумент функции — путь к файлу теста. Если тест не связан с файлом (например, в REPL), входное значение равно undefined. fn() должна возвращать строку с указанием расположения файла снимка.
Возвращаемый тип
void функция default.suite
Использование в Deno
import mod from "node:test";
Перегрузка 1
suite(): Promise<void>Функция suite() импортируется из модуля node:test.
Параметры
name: string Имя набора, отображаемое при выводе результатов тестирования. По умолчанию используется свойство name объекта fn или '<anonymous>', если у fn нет имени.
options: TestOptions Параметры конфигурации набора. Поддерживаются те же параметры, что и для test.
fn: SuiteFn Функция набора, объявляющая вложенные тесты и наборы. Первый аргумент этой функции — объект SuiteContext.
Возвращаемый тип
Promise<void> Немедленно выполняется с результатом undefined.
Перегрузка 2
suite(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
suite(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
пространство имён default.suite
Функции
Сокращённая запись для пометки набора как only. Эквивалентно вызову suite с параметром options.only, установленным в true.
Сокращённая запись для пропуска набора. Эквивалентно вызову suite с параметром options.skip, установленным в true.
Сокращённая запись для пометки набора как TODO. Эквивалентно вызову suite с параметром options.todo, установленным в true.
функция default.suite.only
Использование в Deno
import mod from "node:test";
Перегрузка 1
only(): Promise<void>Сокращённая запись для пометки набора как only. Эквивалентно вызову suite с параметром options.only, установленным в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
only(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
функция default.suite.skip
Использование в Deno
import mod from "node:test";
Перегрузка 1
skip(): Promise<void>Краткая форма для пропуска набора тестов. Это то же самое, что вызвать suite со значением options.skip, установленным в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
функция default.suite.todo
Использование в Deno
import mod from "node:test";
Перегрузка 1
todo(): Promise<void>Краткая форма для пометки набора тестов как TODO. Это то же самое, что вызвать suite со значением options.todo, установленным в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
функция default.todo
Использование в Deno
import mod from "node:test";
Перегрузка 1
todo(): Promise<void>Краткая форма для пометки теста как TODO. Это то же самое, что вызвать test со значением options.todo, установленным в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
функция describe
Использование в Deno
import { describe } from "node:test";
Перегрузка 1
describe(): Promise<void>Псевдоним для suite.
Функция describe() импортируется из модуля node:test.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
describe(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
describe(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
пространство имён describe
Функции
Краткая форма для пометки набора тестов как only. Это то же самое, что вызвать describe со значением options.only, установленным в true.
Краткая форма для пропуска набора тестов. Это то же самое, что вызвать describe со значением options.skip, установленным в true.
Краткая форма для пометки набора тестов как TODO. Это то же самое, что вызвать describe со значением options.todo, установленным в true.
функция describe.only
Использование в Deno
import { describe } from "node:test";
Перегрузка 1
only(): Promise<void>Краткая форма для пометки набора тестов как only. Это то же самое, что вызвать describe со значением options.only, установленным в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
only(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
функция describe.skip
Использование в Deno
import { describe } from "node:test";
Перегрузка 1
skip(): Promise<void>Сокращённая форма для пропуска набора тестов. Это то же самое, что вызвать describe, установив options.skip в значение true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция describe.todo
Использование в Deno
import { describe } from "node:test";
Перегрузка 1
todo(): Promise<void>Сокращённая форма для пометки набора тестов как TODO. Это то же самое, что вызвать describe, установив options.todo в значение true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция it
Использование в Deno
import { it } from "node:test";
Перегрузка 1
it(): Promise<void>Псевдоним для test.
Функция it() импортируется из модуля node:test.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
it(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 3
it(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
пространство имён it
Функции
функция it.only
Использование в Deno
import { it } from "node:test";
Перегрузка 1
only(): Promise<void>Сокращённая форма для пометки теста как only. Это то же самое, что вызвать it, установив options.only в значение true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
only(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция it.skip
Использование в Deno
import { it } from "node:test";
Перегрузка 1
skip(): Promise<void>Сокращённая форма для пропуска теста. Это то же самое, что вызвать it, установив options.skip в значение true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция it.todo
Использование в Deno
import { it } from "node:test";
Перегрузка 1
todo(): Promise<void>Сокращённая запись для пометки теста как TODO. Это эквивалентно вызову it со значением true для параметра options.todo.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
функция only
Использование в Deno
import { only } from "node:test";
Перегрузка 1
only(): Promise<void>Сокращённая запись для пометки теста как only. Это эквивалентно вызову test со значением true для параметра options.only.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
only(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
функция run
Использование в Deno
import { run } from "node:test";
run(options?: RunOptions): TestsStreamПримечание: shard используется для горизонтального распараллеливания запуска тестов на нескольких машинах или процессах и идеально подходит для масштабного выполнения в различных средах. Этот режим несовместим с watch, предназначенным для быстрой итеративной разработки кода с автоматическим повторным запуском тестов при изменении файлов.
import { tap } from 'node:test/reporters';
import { run } from 'node:test';
import process from 'node:process';
import path from 'node:path';
run({ files: [path.resolve('./tests/test.js')] })
.compose(tap)
.pipe(process.stdout);
Параметры
options: RunOptions Параметры конфигурации для запуска тестов.
Возвращаемый тип
функция skip
Использование в Deno
import { skip } from "node:test";
Перегрузка 1
skip(): Promise<void>Сокращённая запись для пропуска теста. Это эквивалентно вызову test со значением true для параметра options.skip.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
функция snapshot.setDefaultSnapshotSerializers
Использование в Deno
import { snapshot } from "node:test";
setDefaultSnapshotSerializers(serializers: ReadonlyArray<(value: any) => any>): voidЭта функция позволяет настроить используемый по умолчанию механизм сериализации, применяемый средством запуска тестов.
По умолчанию средство запуска тестов выполняет сериализацию, вызывая JSON.stringify(value, null, 2) для переданного значения. JSON.stringify() имеет ограничения, связанные с циклическими структурами и поддерживаемыми типами данных. Если требуется более надёжный механизм сериализации, используйте эту функцию, чтобы задать список пользовательских сериализаторов.
Сериализаторы вызываются по порядку: результат предыдущего передаётся на вход следующему. Итоговый результат должен быть строкой.
Параметры
serializers: ReadonlyArray<(value: any) => any> Массив синхронных функций, используемых в качестве сериализаторов по умолчанию для тестов снимков.
Возвращаемый тип
void функция snapshot.setResolveSnapshotPath
Использование в Deno
import { snapshot } from "node:test";
setResolveSnapshotPath(fn: (path: string | undefined) => string): voidЭта функция позволяет задать пользовательский обработчик для определения расположения файла снимка, используемого при тестировании снимков. По умолчанию имя файла снимка совпадает с именем входного файла, к которому добавлено .snapshot.
Параметры
fn: (path: string | undefined) => string Функция для определения расположения файла снимка. Функция получает путь к файлу теста в качестве единственного аргумента. Если тест не связан с файлом (например, в REPL), входное значение равно undefined. fn() должна возвращать строку, указывающую расположение файла снимка.
Возвращаемый тип
void функция suite
Использование в Deno
import { suite } from "node:test";
Перегрузка 1
suite(): Promise<void>Функция suite() импортируется из модуля node:test.
Параметры
name: string Название набора тестов, отображаемое при выводе результатов тестирования. По умолчанию используется свойство name объекта fn или '<anonymous>', если у fn нет имени.
options: TestOptions Параметры конфигурации набора тестов. Поддерживаются те же параметры, что и для test.
fn: SuiteFn Функция набора тестов, объявляющая вложенные тесты и наборы. Первый аргумент этой функции — объект SuiteContext.
Возвращаемый тип
Promise<void> Немедленно выполняется с результатом undefined.
Перегрузка 2
suite(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
suite(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
пространство имён suite
Функции
Сокращённая запись для пометки набора тестов как only. Это эквивалентно вызову suite со значением true для параметра options.only.
Сокращённая запись для пропуска набора тестов. Это эквивалентно вызову suite со значением true для параметра options.skip.
Сокращённая запись для пометки набора тестов как TODO. Это эквивалентно вызову suite со значением true для параметра options.todo.
функция suite.only
Использование в Deno
import { suite } from "node:test";
Перегрузка 1
only(): Promise<void>Сокращённая запись для пометки набора тестов как only. Это эквивалентно вызову suite со значением true для параметра options.only.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
only(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
функция suite.skip
Использование в Deno
import { suite } from "node:test";
Перегрузка 1
skip(): Promise<void>Сокращённая запись для пропуска набора тестов. Это эквивалентно вызову suite со значением true для параметра options.skip.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
функция suite.todo
Использование в Deno
import { suite } from "node:test";
Перегрузка 1
todo(): Promise<void>Сокращённая запись для пометки набора тестов как TODO. Это эквивалентно вызову suite со значением true для параметра options.todo.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
функция test
Использование в Deno
import { test } from "node:test";
Перегрузка 1
test(
name?: string,
fn?: TestFn,
): Promise<void>Функция test() — это значение, импортированное из модуля test. Каждый вызов этой функции приводит к отправке сведений о тесте в TestsStream.
Объект TestContext, переданный аргументу fn, можно использовать для выполнения действий, связанных с текущим тестом. Например, можно пропустить тест, добавить дополнительные диагностические сведения или создать подзадачи.
Функция test() возвращает Promise, который выполняется после завершения теста. Если test() вызывается внутри набора тестов, он выполняется немедленно. Возвращаемое значение обычно можно не сохранять для тестов верхнего уровня. Однако возвращаемое значение подзадач следует использовать, чтобы родительский тест не завершился раньше и не отменил подзадачу, как показано в следующем примере.
test('top level test', async (t) => {
// The setTimeout() in the following subtest would cause it to outlive its
// parent test if 'await' is removed on the next line. Once the parent test
// completes, it will cancel any outstanding subtests.
await t.test('longer running subtest', async (t) => {
return new Promise((resolve, reject) => {
setTimeout(resolve, 1000);
});
});
});
Параметр timeout можно использовать, чтобы завершить тест с ошибкой, если он выполняется дольше timeout миллисекунд. Однако это ненадёжный механизм отмены тестов: выполняющийся тест может заблокировать поток приложения и тем самым помешать запланированной отмене.
Параметры
name: string Имя теста, отображаемое при выводе результатов тестирования. По умолчанию используется свойство name объекта fn или '<anonymous>', если у fn нет имени.
fn: TestFn Проверяемая функция. Первый аргумент этой функции — объект TestContext. Если в тесте используются обратные вызовы, функция обратного вызова передаётся вторым аргументом.
Тип возвращаемого значения
Promise<void> Выполняется с результатом undefined после завершения теста или немедленно, если тест выполняется внутри набора тестов.
Перегрузка 2
test(): Promise<void>Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 3
test(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
пространство имён test
Функции
Эта функция создаёт хук, который выполняется после завершения набора тестов.
Эта функция создаёт хук, который выполняется после каждого теста в текущем наборе. Хук afterEach() выполняется, даже если тест завершается с ошибкой.
Эта функция создаёт хук, который выполняется перед запуском набора тестов.
Эта функция создаёт хук, который выполняется перед каждым тестом в текущем наборе.
Псевдоним для suite.
Примечание: shard используется для горизонтального распараллеливания запуска тестов на нескольких машинах или процессах и подходит для масштабных запусков в различных средах. Этот режим несовместим с режимом watch, предназначенным для быстрого внесения изменений в код за счёт автоматического повторного запуска тестов при изменении файлов.
Функция suite() импортируется из модуля node:test.
Пространства имён
Объект, методы которого используются для настройки доступных проверок объектов TestContext в текущем процессе. Методы из node:assert и функции тестирования снимков доступны по умолчанию.
Переменные
функция test.after
Использование в Deno
import { test } from "node:test";
after(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создаёт хук, который выполняется после завершения набора тестов.
describe('tests', async () => {
after(() => console.log('finished running tests'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если в хуке используются обратные вызовы, функция обратного вызова передаётся вторым аргументом.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция test.afterEach
Использование в Deno
import { test } from "node:test";
afterEach(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создаёт хук, который выполняется после каждого теста в текущем наборе. Хук afterEach() выполняется, даже если тест завершается с ошибкой.
describe('tests', async () => {
afterEach(() => console.log('finished running a test'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если в хуке используются обратные вызовы, функция обратного вызова передаётся вторым аргументом.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция test.assert.register
Использование в Deno
import { test } from "node:test";
register(
name: string,
fn: (
this: TestContext,
...args: any[],
) => void,
): voidОпределяет новую функцию проверки с указанными именем и функцией. Если проверка с таким именем уже существует, она перезаписывается.
Параметры
name: string fn: (
this: TestContext,
...args: any[],
) => void Тип возвращаемого значения
void функция test.before
Использование в Deno
import { test } from "node:test";
before(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создаёт хук, который выполняется перед запуском набора тестов.
describe('tests', async () => {
before(() => console.log('about to run some test'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если в хуке используются обратные вызовы, функция обратного вызова передаётся вторым аргументом.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция test.beforeEach
Использование в Deno
import { test } from "node:test";
beforeEach(
fn?: HookFn,
options?: HookOptions,
): voidЭта функция создаёт хук, который выполняется перед каждым тестом в текущем наборе.
describe('tests', async () => {
beforeEach(() => console.log('about to run a test'));
it('is a subtest', () => {
assert.ok('some relevant assertion here');
});
});
Параметры
fn: HookFn Функция хука. Если в хуке используются обратные вызовы, функция обратного вызова передаётся вторым аргументом.
options: HookOptions Параметры конфигурации хука.
Тип возвращаемого значения
void функция test.describe
Использование в Deno
import { test } from "node:test";
Перегрузка 1
describe(): Promise<void>Псевдоним для suite.
Функция describe() импортируется из модуля node:test.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
describe(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
describe(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
пространство имён test.describe
Функции
Краткая запись для пометки набора как only. Это эквивалентно вызову describe с параметром options.only, установленным в true.
Краткая запись для пропуска набора. Это эквивалентно вызову describe с параметром options.skip, установленным в true.
Краткая запись для пометки набора как TODO. Это эквивалентно вызову describe с параметром options.todo, установленным в true.
функция test.describe.only
Использование в Deno
import { test } from "node:test";
Перегрузка 1
only(): Promise<void>Краткая запись для пометки набора как only. Это эквивалентно вызову describe с параметром options.only, установленным в true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
only(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция test.describe.skip
Использование в Deno
import { test } from "node:test";
Перегрузка 1
skip(): Promise<void>Краткая запись для пропуска набора. Это эквивалентно вызову describe с параметром options.skip, установленным в true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция test.describe.todo
Использование в Deno
import { test } from "node:test";
Перегрузка 1
todo(): Promise<void>Краткая запись для пометки набора как TODO. Это эквивалентно вызову describe с параметром options.todo, установленным в true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция test.it
Использование в Deno
import { test } from "node:test";
Перегрузка 1
it(): Promise<void>Псевдоним для test.
Функция it() импортируется из модуля node:test.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
it(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 3
it(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
пространство имён test.it
Функции
Краткая запись для пометки теста как only. Это эквивалентно вызову it с параметром options.only, которому присвоено значение true.
Краткая запись для пропуска теста. Это эквивалентно вызову it с параметром options.skip, которому присвоено значение true.
Краткая запись для пометки теста как TODO. Это эквивалентно вызову it с параметром options.todo, которому присвоено значение true.
функция test.it.only
Использование в Deno
import { test } from "node:test";
Перегрузка 1
only(): Promise<void>Краткая запись для пометки теста как only. Это эквивалентно вызову it с параметром options.only, которому присвоено значение true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
only(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция test.it.skip
Использование в Deno
import { test } from "node:test";
Перегрузка 1
skip(): Promise<void>Краткая запись для пропуска теста. Это эквивалентно вызову it с параметром options.skip, которому присвоено значение true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция test.it.todo
Использование в Deno
import { test } from "node:test";
Перегрузка 1
todo(): Promise<void>Краткая запись для пометки теста как TODO. Это эквивалентно вызову it с параметром options.todo, которому присвоено значение true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция test.only
Использование в Deno
import { test } from "node:test";
Перегрузка 1
only(): Promise<void>Краткая запись для пометки теста как only. Это эквивалентно вызову test с параметром options.only, которому присвоено значение true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
only(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция test.run
Использование в Deno
import { test } from "node:test";
run(options?: RunOptions): TestsStreamПримечание: shard используется для горизонтального параллельного выполнения тестов на нескольких машинах или процессах и идеально подходит для крупномасштабных запусков в различных средах. Он несовместим с режимом watch, предназначенным для быстрой итерации кода за счёт автоматического повторного запуска тестов при изменении файлов.
import { tap } from 'node:test/reporters';
import { run } from 'node:test';
import process from 'node:process';
import path from 'node:path';
run({ files: [path.resolve('./tests/test.js')] })
.compose(tap)
.pipe(process.stdout);
Параметры
options: RunOptions Параметры конфигурации для запуска тестов.
Возвращаемый тип
функция test.skip
Использование в Deno
import { test } from "node:test";
Перегрузка 1
skip(): Promise<void>Сокращённая запись для пропуска теста. Это эквивалентно вызову test со значением options.skip, установленным в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Возвращаемый тип
Promise<void> Перегрузка 4
функция test.snapshot.setDefaultSnapshotSerializers
Использование в Deno
import { test } from "node:test";
setDefaultSnapshotSerializers(serializers: ReadonlyArray<(value: any) => any>): voidЭта функция используется для настройки механизма сериализации по умолчанию, применяемого средством запуска тестов.
По умолчанию средство запуска тестов выполняет сериализацию, вызывая JSON.stringify(value, null, 2) для переданного значения. JSON.stringify() имеет ограничения при работе с циклическими структурами и поддерживаемыми типами данных. Если требуется более надёжный механизм сериализации, следует использовать эту функцию, чтобы указать список пользовательских сериализаторов.
Сериализаторы вызываются по порядку: результат предыдущего сериализатора передаётся в качестве входных данных следующему. Итоговый результат должен быть строкой.
Параметры
serializers: ReadonlyArray<(value: any) => any> Массив синхронных функций, используемых в качестве сериализаторов по умолчанию для тестов снимков.
Возвращаемый тип
void функция test.snapshot.setResolveSnapshotPath
Использование в Deno
import { test } from "node:test";
setResolveSnapshotPath(fn: (path: string | undefined) => string): voidЭта функция используется для задания пользовательского обработчика, определяющего расположение файла снимка, применяемого при тестировании снимков. По умолчанию имя файла снимка совпадает с именем файла точки входа, к которому добавлено .snapshot.
Параметры
fn: (path: string | undefined) => string Функция, используемая для вычисления расположения файла снимка. Единственным аргументом функция получает путь к файлу теста. Если тест не связан с файлом (например, в REPL), входное значение равно undefined. fn() должна возвращать строку, указывающую расположение файла снимка.
Возвращаемый тип
void функция test.suite
Использование в Deno
import { test } from "node:test";
Перегрузка 1
suite(): Promise<void>Функция suite() импортируется из модуля node:test.
Параметры
name: string Название набора, отображаемое при выводе результатов тестирования. По умолчанию используется свойство name объекта fn или '<anonymous>', если у fn нет имени.
options: TestOptions Параметры конфигурации набора. Поддерживаются те же параметры, что и для test.
fn: SuiteFn Функция набора, объявляющая вложенные тесты и наборы. Первый аргумент этой функции — объект SuiteContext.
Возвращаемый тип
Promise<void> Немедленно выполняется с результатом undefined.
Перегрузка 2
suite(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
suite(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
пространство имён test.suite
Функции
Сокращённая запись для пометки набора как only. Это эквивалентно вызову suite со значением options.only, установленным в true.
Сокращённая запись для пропуска набора. Это эквивалентно вызову suite со значением options.skip, установленным в true.
Сокращённая запись для пометки набора как TODO. Это эквивалентно вызову suite со значением options.todo, установленным в true.
функция test.suite.only
Использование в Deno
import { test } from "node:test";
Перегрузка 1
only(): Promise<void>Сокращённая запись для пометки набора как only. Это эквивалентно вызову suite со значением options.only, установленным в true.
Параметры
Возвращаемый тип
Promise<void> Перегрузка 2
only(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 3
only(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Возвращаемый тип
Promise<void> Перегрузка 4
функция test.suite.skip
Использование в Deno
import { test } from "node:test";
Перегрузка 1
skip(): Promise<void>Краткая запись для пропуска набора тестов. Это то же самое, что вызвать suite, установив options.skip в true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
skip(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
skip(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция test.suite.todo
Использование в Deno
import { test } from "node:test";
Перегрузка 1
todo(): Promise<void>Краткая запись для пометки набора тестов как TODO. Это то же самое, что вызвать suite, установив options.todo в true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: SuiteFn,
): Promise<void>Параметры
name: string fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: SuiteFn,
): Promise<void>Параметры
options: TestOptions fn: SuiteFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция test.todo
Использование в Deno
import { test } from "node:test";
Перегрузка 1
todo(): Promise<void>Краткая запись для пометки теста как TODO. Это то же самое, что вызвать test, установив options.todo в true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
функция todo
Использование в Deno
import { todo } from "node:test";
Перегрузка 1
todo(): Promise<void>Краткая запись для пометки теста как TODO. Это то же самое, что вызвать test, установив options.todo в true.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
todo(
name?: string,
fn?: TestFn,
): Promise<void>Параметры
name: string fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 3
todo(
options?: TestOptions,
fn?: TestFn,
): Promise<void>Параметры
options: TestOptions fn: TestFn Тип возвращаемого значения
Promise<void> Перегрузка 4
интерфейс AssertSnapshotOptions
Использование в Deno
import { type AssertSnapshotOptions } from "node:test";
Свойства
serializers: ReadonlyArray<(value: any) => any> | undefined Массив синхронных функций, используемых для сериализации value в строку. value передаётся в качестве единственного аргумента первой функции-сериализатору. Возвращаемое значение каждого сериализатора передаётся как входное значение следующему сериализатору. После выполнения всех сериализаторов полученное значение преобразуется в строку.
Если сериализаторы не указаны, используются сериализаторы тестового средства запуска по умолчанию.
интерфейс HookOptions
Использование в Deno
import { type HookOptions } from "node:test";
Параметры конфигурации для хуков.
Свойства
интерфейс MockFunctionCall
Использование в Deno
import { type MockFunctionCall } from "node:test";
Параметры типа
Свойства
error: unknown | undefined Если имитируемая функция вызвала исключение, это свойство содержит выброшенное значение.
result: ReturnType | undefined Значение, возвращённое имитируемой функцией.
Если имитируемая функция вызвала исключение, значение будет undefined.
stack: Error Объект Error, стек которого можно использовать для определения места вызова имитируемой функции.
Если имитируемая функция является конструктором, это поле содержит создаваемый класс. В противном случае значение будет undefined.
this: unknown Значение this имитируемой функции.
интерфейс MockFunctionOptions
Использование в Deno
import { type MockFunctionOptions } from "node:test";
Свойства
times: number | undefined Количество раз, в течение которых имитация будет использовать поведение implementation. После того как имитация функции будет вызвана times раз, она автоматически восстановит поведение original. Это значение должно быть целым числом больше нуля.
интерфейс MockMethodOptions
Использование в Deno
import { type MockMethodOptions } from "node:test";
Свойства
getter: boolean | undefined Если true, object[methodName] рассматривается как геттер. Этот параметр нельзя использовать вместе с параметром setter.
setter: boolean | undefined Если true, object[methodName] рассматривается как сеттер. Этот параметр нельзя использовать вместе с параметром getter.
интерфейс MockModuleOptions
Использование в Deno
import { type MockModuleOptions } from "node:test";
Свойства
cache: boolean | undefined Если значение равно false, каждый вызов require() или import() создает новый модуль-заглушку. Если значение равно true, последующие вызовы будут возвращать ту же заглушку модуля, которая добавляется в кэш CommonJS.
defaultExport: any Значение, используемое в качестве экспорта по умолчанию имитируемого модуля.
Если это значение не задано, заглушки ESM не содержат экспорта по умолчанию. Если заглушка является модулем CommonJS или встроенным модулем, этот параметр используется в качестве значения module.exports. Если это значение не задано, в заглушках CJS и встроенных модулях в качестве значения module.exports используется пустой объект.
namedExports: object | undefined Объект, ключи и значения которого используются для создания именованных экспортов имитируемого модуля.
Если заглушка является модулем CommonJS или встроенным модулем, эти значения копируются в module.exports. Поэтому, если заглушка создана с именованными экспортами и экспортом по умолчанию, не являющимся объектом, при использовании в качестве модуля CJS или встроенного модуля она вызовет исключение.
интерфейс MockTimersOptions
Использование в Deno
import { type MockTimersOptions } from "node:test";
интерфейс RunOptions
Использование в Deno
import { type RunOptions } from "node:test";
Свойства
concurrency:
number
| boolean
| undefined
Если задано число, указанное количество тестовых процессов будет выполняться параллельно, причем каждому процессу будет соответствовать один файл тестов. Если true, параллельно будут выполняться os.availableParallelism() - 1 файлов тестов. Если false, за раз будет выполняться только один файл тестов.
files: readonly string[] | undefined Массив со списком файлов для запуска. Если не задан, файлы запускаются в соответствии с моделью выполнения средства запуска тестов.
forceExit: boolean | undefined Настраивает средство запуска тестов так, чтобы процесс завершался после выполнения всех известных тестов, даже если в противном случае цикл событий оставался бы активным.
globPatterns: readonly string[] | undefined Массив шаблонов glob для сопоставления с файлами тестов. Этот параметр нельзя использовать вместе с files. Если он не задан, файлы запускаются в соответствии с моделью выполнения средства запуска тестов.
inspectPort:
number
| (() => number)
| undefined
Задает порт инспектора дочернего процесса теста. Это может быть число или функция без аргументов, возвращающая число. Если задано значение null или undefined, каждый процесс получает собственный порт, увеличенный относительно process.debugPort основного процесса. Этот параметр игнорируется, если параметр isolation установлен в 'none', поскольку дочерние процессы не создаются.
isolation:
"process"
| "none"
| undefined
Настраивает тип изоляции тестов. Если задано 'process', каждый файл тестов запускается в отдельном дочернем процессе. Если задано 'none', все файлы тестов запускаются в текущем процессе.
only: boolean | undefined Если значение истинно, контекст тестирования будет запускать только тесты, для которых задан параметр only
setup: ((reporter: TestsStream) => void | Promise<void>) | undefined Функция, принимающая экземпляр TestsStream; ее можно использовать для настройки обработчиков до запуска тестов.
execArgv: readonly string[] | undefined Массив флагов CLI, передаваемых исполняемому файлу node при создании подпроцессов. Этот параметр не влияет на работу, если isolation имеет значение 'none'.
argv: readonly string[] | undefined Массив флагов CLI, передаваемых каждому файлу тестов при создании подпроцессов. Этот параметр не влияет на работу, если isolation имеет значение 'none'.
signal: AbortSignal | undefined Позволяет прервать выполняющийся тест.
testNamePatterns:
string
| RegExp
| ReadonlyArray<string | RegExp>
| undefined
Если задан, запускаются только тесты, имена которых соответствуют указанному шаблону. Строки интерпретируются как регулярные выражения JavaScript.
testSkipPatterns:
string
| RegExp
| ReadonlyArray<string | RegExp>
| undefined
Строка, регулярное выражение или массив регулярных выражений, позволяющие исключить запуск тестов, имена которых соответствуют указанному шаблону. Шаблоны имен тестов интерпретируются как регулярные выражения JavaScript. Для каждого выполняемого теста также выполняются все соответствующие ему хуки теста, например beforeEach().
timeout: number | undefined Количество миллисекунд, по истечении которого выполнение теста завершится с ошибкой. Если значение не задано, вложенные тесты наследуют его от родительского теста.
watch: boolean | undefined Определяет, следует ли запускать тесты в режиме наблюдения.
coverage: boolean | undefined включает сбор данных о покрытии кода.
coverageExcludeGlobs:
string
| readonly string[]
| undefined
Исключает определенные файлы из анализа покрытия кода с помощью шаблона glob, который может соответствовать абсолютным и относительным путям к файлам. Это свойство применяется только в том случае, если coverage установлено в true. Если заданы и coverageExcludeGlobs, и coverageIncludeGlobs, файлы должны соответствовать обоим критериям, чтобы попасть в отчет о покрытии.
coverageIncludeGlobs:
string
| readonly string[]
| undefined
Включает определенные файлы в анализ покрытия кода с помощью шаблона glob, который может соответствовать абсолютным и относительным путям к файлам. Это свойство применяется только в том случае, если coverage установлено в true. Если заданы и coverageExcludeGlobs, и coverageIncludeGlobs, файлы должны соответствовать обоим критериям, чтобы попасть в отчет о покрытии.
lineCoverage: number | undefined Требует минимального процента покрытых строк. Если покрытие кода не достигнет указанного порога, процесс завершится с кодом 1.
branchCoverage: number | undefined Требует минимального процента покрытых ветвей. Если покрытие кода не достигнет указанного порога, процесс завершится с кодом 1.
functionCoverage: number | undefined Требует минимального процента покрытых функций. Если покрытие кода не достигнет указанного порога, процесс завершится с кодом 1.
интерфейс TestContextAssert
| "deepStrictEqual"
| "doesNotMatch"
| "doesNotReject"
| "doesNotThrow"
| "equal"
| "fail"
| "ifError"
| "match"
| "notDeepEqual"
| "notDeepStrictEqual"
| "notEqual"
| "notStrictEqual"
| "ok"
| "partialDeepStrictEqual"
| "rejects"
| "strictEqual"
| "throws"
Использование в Deno
import { type TestContextAssert } from "node:test";
Сигнатуры индекса
Методы
fileSnapshot(): void Эта функция сериализует value и записывает его в файл, указанный в path.
test('snapshot test with default serialization', (t) => {
t.assert.fileSnapshot({ value1: 1, value2: 2 }, './snapshots/snapshot.json');
});
Эта функция отличается от context.assert.snapshot() следующим:
- Путь к файлу снимка явно задается пользователем.
- Каждый файл снимка содержит только одно значение снимка.
- Средство запуска тестов не выполняет дополнительное экранирование.
Эти различия позволяют лучше поддерживать в файлах снимков такие возможности, как подсветка синтаксиса.
snapshot(
value: any,
options?: AssertSnapshotOptions,
): void Эта функция реализует проверки для тестирования снимков.
test('snapshot test with default serialization', (t) => {
t.assert.snapshot({ value1: 1, value2: 2 });
});
test('snapshot test with custom serialization', (t) => {
t.assert.snapshot({ value3: 3, value4: 4 }, {
serializers: [(value) => JSON.stringify(value)]
});
});
интерфейс TestContextWaitForOptions
Использование в Deno
import { type TestContextWaitForOptions } from "node:test";
интерфейс TestOptions
Использование в Deno
import { type TestOptions } from "node:test";
Свойства
concurrency:
number
| boolean
| undefined
Если указано число, то такое количество тестов будет выполняться параллельно. Если значение истинное, параллельно будут выполняться тесты в количестве, равном (число ядер процессора - 1). Для под-тестов параллельно будут выполняться Infinity тестов. Если значение ложное, за раз будет выполняться только один тест. Если значение не указано, под-тесты наследуют его от родительского теста.
only: boolean | undefined Если значение истинное и контекст тестирования настроен на запуск only тестов, этот тест будет запущен. В противном случае тест будет пропущен.
signal: AbortSignal | undefined Позволяет прервать выполняющийся тест.
skip:
boolean
| string
| undefined
Если значение истинное, тест пропускается. Если указана строка, она отображается в результатах тестирования как причина пропуска теста.
timeout: number | undefined Количество миллисекунд, по истечении которых тест завершится с ошибкой. Если значение не указано, под-тесты наследуют его от родительского теста.
todo:
boolean
| string
| undefined
Если значение истинное, тест помечается как TODO. Если указана строка, она отображается в результатах тестирования как причина, по которой тест TODO.
plan: number | undefined Ожидаемое количество проверок и под-тестов, которые должны быть выполнены в тесте. Если количество выполненных проверок не совпадает с указанным в плане, тест завершится с ошибкой.
интерфейс TestShard
Использование в Deno
import { type TestShard } from "node:test";
пространство имён assert
Использование в Deno
import { assert } from "node:test";
Объект, методы которого используются для настройки доступных проверок в объектах TestContext текущего процесса. По умолчанию доступны методы из node:assert и функции для тестирования снимков.
Эту конфигурацию можно применить ко всем файлам, поместив общий код конфигурации в модуль, предварительно загружаемый с помощью --require или --import.
Функции
Определяет новую функцию проверки с указанными именем и функцией. Если проверка с таким именем уже существует, она перезаписывается.
пространство имён default.assert
Использование в Deno
import mod from "node:test";
Объект, методы которого используются для настройки доступных проверок в объектах TestContext текущего процесса. По умолчанию доступны методы из node:assert и функции для тестирования снимков.
Эту конфигурацию можно применить ко всем файлам, поместив общий код конфигурации в модуль, предварительно загружаемый с помощью --require или --import.
Функции
Определяет новую функцию проверки с указанными именем и функцией. Если проверка с таким именем уже существует, она перезаписывается.
пространство имён default.snapshot
Использование в Deno
import mod from "node:test";
Функции
Эта функция используется для настройки механизма сериализации по умолчанию, используемого средством запуска тестов.
Эта функция задаёт пользовательский обработчик для определения расположения файла снимков, используемого при тестировании снимков. По умолчанию имя файла снимков совпадает с именем файла точки входа, к которому добавляется .snapshot.
пространство имён snapshot
Использование в Deno
import { snapshot } from "node:test";
Функции
Эта функция используется для настройки механизма сериализации по умолчанию, используемого средством запуска тестов.
Эта функция задаёт пользовательский обработчик для определения расположения файла снимков, используемого при тестировании снимков. По умолчанию имя файла снимков совпадает с именем файла точки входа, к которому добавляется .snapshot.
пространство имён test.assert
Использование в Deno
import { test } from "node:test";
Объект, методы которого используются для настройки доступных проверок в объектах TestContext текущего процесса. По умолчанию доступны методы из node:assert и функции для тестирования снимков.
Эту конфигурацию можно применить ко всем файлам, поместив общий код конфигурации в модуль, предварительно загружаемый с помощью --require или --import.
Функции
Определяет новую функцию проверки с указанными именем и функцией. Если проверка с таким именем уже существует, она перезаписывается.
пространство имён test.snapshot
Использование в Deno
import { test } from "node:test";
Функции
Эта функция используется для настройки механизма сериализации по умолчанию, используемого средством запуска тестов.
Эта функция задаёт пользовательский обработчик для определения расположения файла снимков, используемого при тестировании снимков. По умолчанию имя файла снимков совпадает с именем файла точки входа, к которому добавляется .snapshot.
псевдоним типа FunctionPropertyNames
Использование в Deno
import { type FunctionPropertyNames } from "node:test";
псевдоним типа HookFn
Использование в Deno
import { type HookFn } from "node:test";
Функция-хук. Первый аргумент — контекст, в котором вызывается хук. Если хук использует обратные вызовы, функция обратного вызова передаётся вторым аргументом.
Определение
(
c: TestContext | SuiteContext,
done: (result?: any) => void,
) => any псевдоним типа Mock
Использование в Deno
import { type Mock } from "node:test";
Параметры типа
F extends Function Определение
F & { mock: MockFunctionContext<F>; } псевдоним типа NoOpFunction
Использование в Deno
import { type NoOpFunction } from "node:test";
Определение
(...args: any[]) => undefined псевдоним типа SuiteFn
Использование в Deno
import { type SuiteFn } from "node:test";
Тип функции тестового набора. Аргументом этой функции является объект SuiteContext.
Определение
(s: SuiteContext) => void | Promise<void> псевдоним типа TestContextHookFn
Использование в Deno
import { type TestContextHookFn } from "node:test";
Функция-хук. Первый аргумент — объект TestContext. Если хук использует обратные вызовы, функция обратного вызова передаётся вторым аргументом.
Определение
(
t: TestContext,
done: (result?: any) => void,
) => any псевдоним типа TestFn
Использование в Deno
import { type TestFn } from "node:test";
Тип функции, передаваемой в test. Первый аргумент этой функции — объект TestContext. Если тест использует обратные вызовы, функция обратного вызова передаётся вторым аргументом.
Определение
(
t: TestContext,
done: (result?: any) => void,
) => void | Promise<void> псевдоним типа Timer
Использование в Deno
import { type Timer } from "node:test";
Определение
"setInterval"
| "setTimeout"
| "setImmediate"
| "Date"
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/test