Skip to content
Vitest 1
Main Navigation РуководствоAPIКонфигурацияПродвинутый
1.6.1
0.34.6

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Внешний вид

Sidebar Navigation

Руководство

Зачем Vitest

Начало работы

Функциональность

Рабочая область

Интерфейс командной строки

Фильтрация тестов

Репортёры

Покрытие кода

Снапшоты

Мокирование

Тестирование типов

Vitest UI

Режим браузера

In-source тестирование (Тестирование в исходном коде)

Контекст теста

Тестовая среда

Расширение проверок (matchers)

Интеграции с IDE

Отладка

Сравнения с другими тестовыми фреймворками

Руководство по миграции

Распространенные ошибки

Улучшение производительности

API

Справочник по Test API

Mock-функции

Vitest

expect

expectTypeOf

assert

assertType

Конфигурация

Настройка конфигурационного файла Vitest

Настройка Vitest

Содержание страницы

assert ​

Vitest повторно экспортирует метод assert из chai для проверки инвариантов.

assert ​

  • Тип: (expression: any, message?: string) => asserts expression

Утверждает, что выражение expression истинно. В противном случае, выбрасывается исключение.

ts
import { assert, test } from 'vitest';

test('assert', () => {
  assert('foo' !== 'bar', "foo не должно быть равно 'bar'");
});

fail ​

  • Тип:
    • (message?: string) => never
    • <T>(actual: T, expected: T, message?: string, operator?: string) => never

Принудительно завершает тест с ошибкой.

ts
import { assert, test } from 'vitest';

test('assert.fail', () => {
  assert.fail('Сообщение об ошибке при неудаче');
  assert.fail('foo', 'bar', 'foo не является bar', '===');
});

isOk ​

  • Тип: <T>(value: T, message?: string) => void
  • Псевдоним: ok

Утверждает, что значение value является истинным (truthy).

ts
import { assert, test } from 'vitest';

test('assert.isOk', () => {
  assert.isOk('foo', 'Любое истинное значение ok');
  assert.isOk(
    false,
    'Это приведет к ошибке, поскольку false не является истинным значением'
  );
});

isNotOk ​

  • Тип: <T>(value: T, message?: string) => void
  • Псевдоним: notOk

Утверждает, что значение value является ложным (falsy).

ts
import { assert, test } from 'vitest';

test('assert.isNotOk', () => {
  assert.isNotOk(
    'foo',
    'Это приведет к ошибке, так как любое истинное значение не ok'
  );
  assert.isNotOk(
    false,
    'Это выполнится, поскольку false является ложным значением'
  );
});

equal ​

  • Тип: <T>(actual: T, expected: T, message?: string) => void

Утверждает нестрогое равенство (==) actual и expected.

ts
import { assert, test } from 'vitest';

test('assert.equal', () => {
  assert.equal(Math.sqrt(4), '2');
});

notEqual ​

  • Тип: <T>(actual: T, expected: T, message?: string) => void

Утверждает нестрогое неравенство (!=) actual и expected.

ts
import { assert, test } from 'vitest';

test('assert.equal', () => {
  assert.notEqual(Math.sqrt(4), 3);
});

strictEqual ​

  • Тип: <T>(actual: T, expected: T, message?: string) => void

Утверждает строгое равенство (===) actual и expected.

ts
import { assert, test } from 'vitest';

test('assert.strictEqual', () => {
  assert.strictEqual(Math.sqrt(4), 2);
});

deepEqual ​

  • Тип: <T>(actual: T, expected: T, message?: string) => void

Утверждает, что actual глубоко равен expected. Сравнивает значения всех свойств рекурсивно.

ts
import { assert, test } from 'vitest';

test('assert.deepEqual', () => {
  assert.deepEqual({ color: 'green' }, { color: 'green' });
});

notDeepEqual ​

  • Тип: <T>(actual: T, expected: T, message?: string) => void

Утверждает, что actual не глубоко равен expected.

ts
import { assert, test } from 'vitest';

test('assert.notDeepEqual', () => {
  assert.notDeepEqual({ color: 'green' }, { color: 'red' });
});

isAbove ​

  • Тип: (valueToCheck: number, valueToBeAbove: number, message?: string) => void

Утверждает, что valueToCheck строго больше, чем valueToBeAbove.

ts
import { assert, test } from 'vitest';

test('assert.isAbove', () => {
  assert.isAbove(5, 2, '5 строго больше 2');
});

isAtLeast ​

  • Тип: (valueToCheck: number, valueToBeAtLeast: number, message?: string) => void

Утверждает, что valueToCheck больше или равно valueToBeAtLeast.

ts
import { assert, test } from 'vitest';

test('assert.isAtLeast', () => {
  assert.isAtLeast(5, 2, '5 больше или равно 2');
  assert.isAtLeast(3, 3, '3 больше или равно 3');
});

isBelow ​

  • Тип: (valueToCheck: number, valueToBeBelow: number, message?: string) => void

Утверждает, что valueToCheck строго меньше, чем valueToBeBelow.

ts
import { assert, test } from 'vitest';

test('assert.isBelow', () => {
  assert.isBelow(3, 6, '3 строго меньше 6');
});

isAtMost ​

  • Тип: (valueToCheck: number, valueToBeAtMost: number, message?: string) => void

Утверждает, что valueToCheck меньше или равно valueToBeAtMost.

ts
import { assert, test } from 'vitest';

test('assert.isAtMost', () => {
  assert.isAtMost(3, 6, '3 меньше или равно 6');
  assert.isAtMost(4, 4, '4 меньше или равно 4');
});

isTrue ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value равно true.

ts
import { assert, test } from 'vitest';

const testPassed = true;

test('assert.isTrue', () => {
  assert.isTrue(testPassed);
});

isNotTrue ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не равно true. Обратите внимание, что это не то же самое, что isFalse.

ts
import { assert, test } from 'vitest';

const testPassed = 'ok';

test('assert.isNotTrue', () => {
  assert.isNotTrue(testPassed);
});

isFalse ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value равно false.

ts
import { assert, test } from 'vitest';

const testPassed = false;

test('assert.isFalse', () => {
  assert.isFalse(testPassed);
});

isNotFalse ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не равно false. Обратите внимание, что это не то же самое, что isTrue.

ts
import { assert, test } from 'vitest';

const testPassed = 'no';

test('assert.isNotFalse', () => {
  assert.isNotFalse(testPassed);
});

isNull ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value равно null.

ts
import { assert, test } from 'vitest';

const error = null;

test('assert.isNull', () => {
  assert.isNull(error, 'error является null');
});

isNotNull ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не равно null.

ts
import { assert, test } from 'vitest';

const error = { message: 'произошла ошибка' };

test('assert.isNotNull', () => {
  assert.isNotNull(error, 'error не является null');
});

isNaN ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value является NaN (не число).

ts
import { assert, test } from 'vitest';

const calculation = 1 * 'vitest';

test('assert.isNaN', () => {
  assert.isNaN(calculation, 'результат 1 * "vitest" равен NaN');
});

isNotNaN ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не является NaN.

ts
import { assert, test } from 'vitest';

const calculation = 1 * 2;

test('assert.isNotNaN', () => {
  assert.isNotNaN(calculation, '1 * 2 не является NaN, это 2');
});

exists ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не является ни null, ни undefined.

ts
import { assert, test } from 'vitest';

const name = 'foo';

test('assert.exists', () => {
  assert.exists(name, 'foo не является ни null, ни undefined');
});

notExists ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value равно либо null, либо undefined.

ts
import { assert, test } from 'vitest';

const foo = null;
const bar = undefined;

test('assert.notExists', () => {
  assert.notExists(foo, 'foo равно null, поэтому считается отсутствующим');
  assert.notExists(bar, 'bar равно undefined, поэтому считается отсутствующим');
});

isUndefined ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value является undefined.

ts
import { assert, test } from 'vitest';

const name = undefined;

test('assert.isUndefined', () => {
  assert.isUndefined(name, 'name является undefined');
});

isDefined ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не является undefined.

ts
import { assert, test } from 'vitest';

const name = 'foo';

test('assert.isDefined', () => {
  assert.isDefined(name, 'name не является undefined');
});

isFunction ​

  • Тип: <T>(value: T, message?: string) => void
  • Псевдоним: isCallable Утверждает, что value является функцией.
ts
import { assert, test } from 'vitest';

function name() {
  return 'foo';
}

test('assert.isFunction', () => {
  assert.isFunction(name, 'name - это функция');
});

isNotFunction ​

  • Тип: <T>(value: T, message?: string) => void
  • Псевдоним: isNotCallable

Утверждает, что value не является функцией.

ts
import { assert, test } from 'vitest';

const name = 'foo';

test('assert.isNotFunction', () => {
  assert.isNotFunction(name, 'name - не функция, а строка');
});

isObject ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value является объектом типа Object (определяется через Object.prototype.toString). Не распространяется на экземпляры классов, унаследованных от Object.

ts
import { assert, test } from 'vitest';

const someThing = { color: 'red', shape: 'circle' };

test('assert.isObject', () => {
  assert.isObject(someThing, 'someThing - это объект');
});

isNotObject ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не является объектом (в смысле Object.prototype.toString). Важно: это утверждение не проходит для объектов, являющихся экземплярами подклассов Object.

ts
import { assert, test } from 'vitest';

const someThing = 'redCircle';

test('assert.isNotObject', () => {
  assert.isNotObject(someThing, 'someThing — это строка, а не объект');
});

isArray ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value является массивом.

ts
import { assert, test } from 'vitest';

const color = ['red', 'green', 'yellow'];

test('assert.isArray', () => {
  assert.isArray(color, 'color — это массив');
});

isNotArray ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не является массивом.

ts
import { assert, test } from 'vitest';

const color = 'red';

test('assert.isNotArray', () => {
  assert.isNotArray(color, 'color — это строка, а не массив');
});

isString ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value является строкой.

ts
import { assert, test } from 'vitest';

const color = 'red';

test('assert.isString', () => {
  assert.isString(color, 'color — это строка');
});

isNotString ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не является строкой.

ts
import { assert, test } from 'vitest';

const color = ['red', 'green', 'yellow'];

test('assert.isNotString', () => {
  assert.isNotString(color, 'color — это массив, а не строка');
});

isNumber ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value является числом.

ts
import { assert, test } from 'vitest';

const colors = 3;

test('assert.isNumber', () => {
  assert.isNumber(colors, 'colors — это число');
});

isNotNumber ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не является числом.

ts
import { assert, test } from 'vitest';

const colors = '3 colors';

test('assert.isNotNumber', () => {
  assert.isNotNumber(colors, 'colors — это строка, а не число');
});

isFinite ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value является конечным числом (не NaN и не Infinity).

ts
import { assert, test } from 'vitest';

const colors = 3;

test('assert.isFinite', () => {
  assert.isFinite(colors, 'colors — это конечное число (не NaN и не Infinity)');
});

isBoolean ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value является булевым значением (boolean).

ts
import { assert, test } from 'vitest';

const isReady = true;

test('assert.isBoolean', () => {
  assert.isBoolean(isReady, 'isReady — это булево значение');
});

isNotBoolean ​

  • Тип: <T>(value: T, message?: string) => void

Утверждает, что value не является булевым значением.

ts
import { assert, test } from 'vitest';

const isReady = 'sure';

test('assert.isNotBoolean', () => {
  assert.isNotBoolean(isReady, 'isReady — это строка, а не булево значение');
});

typeOf ​

  • Тип: <T>(value: T, name: string, message?: string) => void

Утверждает, что тип value соответствует name, как определено в Object.prototype.toString.

ts
import { assert, test } from 'vitest';

test('assert.typeOf', () => {
  assert.typeOf({ color: 'red' }, 'object', 'Это объект');
  assert.typeOf(['red', 'green'], 'array', 'Это массив');
  assert.typeOf('red', 'string', 'Это строка');
  assert.typeOf(/red/, 'regexp', 'Это регулярное выражение');
  assert.typeOf(null, 'null', 'Это null');
  assert.typeOf(undefined, 'undefined', 'Это undefined');
});

notTypeOf ​

  • Тип: <T>(value: T, name: string, message?: string) => void

Утверждает, что тип value не соответствует name, как определено в Object.prototype.toString.

ts
import { assert, test } from 'vitest';

test('assert.notTypeOf', () => {
  assert.notTypeOf('red', 'number', '"red" не является числом');
});

instanceOf ​

  • Тип: <T>(value: T, constructor: Function, message?: string) => void

Утверждает, что value является экземпляром constructor.

ts
import { assert, test } from 'vitest';

function Person(name) {
  this.name = name;
}
const foo = new Person('foo');

class Tea {
  constructor(name) {
    this.name = name;
  }
}
const coffee = new Tea('coffee');

test('assert.instanceOf', () => {
  assert.instanceOf(foo, Person, 'foo является экземпляром Person');
  assert.instanceOf(coffee, Tea, 'coffee является экземпляром Tea');
});

notInstanceOf ​

  • Тип: <T>(value: T, constructor: Function, message?: string) => void

Утверждает, что value не является экземпляром constructor.

ts
import { assert, test } from 'vitest';

function Person(name) {
  this.name = name;
}
const foo = new Person('foo');

class Tea {
  constructor(name) {
    this.name = name;
  }
}
const coffee = new Tea('coffee');

test('assert.notInstanceOf', () => {
  assert.notInstanceOf(foo, Tea, 'foo не является экземпляром класса Tea');
});

include ​

  • Тип:
    • (haystack: string, needle: string, message?: string) => void
    • <T>(haystack: readonly T[] | ReadonlySet<T> | ReadonlyMap<any, T>, needle: T, message?: string) => void
    • <T extends object>(haystack: WeakSet<T>, needle: T, message?: string) => void
    • <T>(haystack: T, needle: Partial<T>, message?: string) => void

Утверждает, что haystack содержит needle. Может использоваться для проверки наличия значения в массиве, подстроки в строке или подмножества свойств в объекте.

ts
import { assert, test } from 'vitest';

test('assert.include', () => {
  assert.include([1, 2, 3], 2, 'Массив содержит значение 2');
  assert.include('foobar', 'foo', 'Строка содержит подстроку "foo"');
  assert.include(
    { foo: 'bar', hello: 'universe' },
    { foo: 'bar' },
    'Объект содержит свойство foo со значением "bar"'
  );
});

notInclude ​

  • Тип:
    • (haystack: string, needle: string, message?: string) => void
    • <T>(haystack: readonly T[] | ReadonlySet<T> | ReadonlyMap<any, T>, needle: T, message?: string) => void
    • <T extends object>(haystack: WeakSet<T>, needle: T, message?: string) => void
    • <T>(haystack: T, needle: Partial<T>, message?: string) => void

Утверждает, что haystack не содержит needle. Может использоваться для проверки отсутствия значения в массиве, подстроки в строке или подмножества свойств в объекте.

ts
import { assert, test } from 'vitest';

test('assert.notInclude', () => {
  assert.notInclude([1, 2, 3], 4, 'Массив не содержит значение 4');
  assert.notInclude(
    'foobar',
    'baz',
    "Строка 'foobar' не содержит подстроку 'baz'"
  );
  assert.notInclude(
    { foo: 'bar', hello: 'universe' },
    { foo: 'baz' },
    "Объект не содержит свойство foo со значением 'baz'"
  );
});

deepInclude ​

  • Тип:
  • (haystack: string, needle: string, message?: string) => void
  • <T>(haystack: readonly T[] | ReadonlySet<T> | ReadonlyMap<any, T>, needle: T, message?: string) => void
  • <T>(haystack: T, needle: T extends WeakSet<any> ? never : Partial<T>, message?: string) => void

Утверждает, что haystack содержит needle. Может использоваться для проверки наличия значения в массиве или подмножества свойств в объекте. Используется глубокое сравнение на равенство.

ts
import { assert, test } from 'vitest';

const obj1 = { a: 1 };
const obj2 = { b: 2 };

test('assert.deepInclude', () => {
  assert.deepInclude([obj1, obj2], { a: 1 });
  assert.deepInclude({ foo: obj1, bar: obj2 }, { foo: { a: 1 } });
});

notDeepInclude ​

  • Тип:
    • (haystack: string, needle: string, message?: string) => void
    • <T>(haystack: readonly T[] | ReadonlySet<T> | ReadonlyMap<any, T>, needle: T, message?: string) => void
    • <T>(haystack: T, needle: T extends WeakSet<any> ? never : Partial<T>, message?: string) => void

Утверждает, что haystack не содержит needle. Может использоваться для проверки отсутствия значения в массиве или подмножества свойств в объекте. Используется глубокое сравнение на равенство.

ts
import { assert, test } from 'vitest';

const obj1 = { a: 1 };
const obj2 = { b: 2 };

test('assert.notDeepInclude', () => {
  assert.notDeepInclude([obj1, obj2], { a: 10 });
  assert.notDeepInclude({ foo: obj1, bar: obj2 }, { foo: { a: 10 } });
});

nestedInclude ​

  • Тип: (haystack: any, needle: any, message?: string) => void

Утверждает, что haystack содержит needle. Может использоваться для проверки наличия подмножества свойств во вложенном объекте. Позволяет использовать точечную и скобочную нотацию для доступа к вложенным свойствам. Символы [] и . в именах свойств можно экранировать с помощью двойных обратных слешей (\\).

ts
import { assert, test } from 'vitest';

test('assert.nestedInclude', () => {
  assert.nestedInclude({ '.a': { b: 'x' } }, { '\\.a.[b]': 'x' });
  assert.nestedInclude({ a: { '[b]': 'x' } }, { 'a.\\[b\\]': 'x' });
});

notNestedInclude ​

  • Тип: (haystack: any, needle: any, message?: string) => void

Утверждает, что haystack не содержит needle. Может использоваться для проверки отсутствия подмножества свойств во вложенном объекте. Позволяет использовать точечную и скобочную нотацию для доступа к вложенным свойствам. Символы [] и . в именах свойств можно экранировать с помощью двойных обратных слешей (\\).

ts
import { assert, test } from 'vitest';

test('assert.nestedInclude', () => {
  assert.notNestedInclude({ '.a': { b: 'x' } }, { '\\.a.b': 'y' });
  assert.notNestedInclude({ a: { '[b]': 'x' } }, { 'a.\\[b\\]': 'y' });
});

deepNestedInclude ​

  • Тип: (haystack: any, needle: any, message?: string) => void

Утверждает, что haystack содержит needle. Может использоваться для проверки наличия подмножества свойств во вложенном объекте с использованием глубокого сравнения на равенство. Позволяет использовать точечную и скобочную нотацию для доступа к вложенным свойствам. Символы [] и . в именах свойств можно экранировать с помощью двойных обратных слешей (\\).

ts
import { assert, test } from 'vitest';

test('assert.deepNestedInclude', () => {
  assert.deepNestedInclude({ a: { b: [{ x: 1 }] } }, { 'a.b[0]': { x: 1 } });
  assert.deepNestedInclude(
    { '.a': { '[b]': { x: 1 } } },
    { '\\.a.\\[b\\]': { x: 1 } }
  );
});

notDeepNestedInclude ​

  • Тип: (haystack: any, needle: any, message?: string) => void

Утверждает, что haystack не содержит needle. Может использоваться для проверки отсутствия подмножества свойств во вложенном объекте с использованием глубокого сравнения на равенство. Позволяет использовать точечную и скобочную нотацию для доступа к вложенным свойствам. Символы [] и . в именах свойств можно экранировать с помощью двойных обратных слешей (\\).

ts
import { assert, test } from 'vitest';

test('assert.notDeepNestedInclude', () => {
  assert.notDeepNestedInclude({ a: { b: [{ x: 1 }] } }, { 'a.b[0]': { y: 1 } });
  assert.notDeepNestedInclude(
    { '.a': { '[b]': { x: 1 } } },
    { '\\.a.\\[b\\]': { y: 2 } }
  );
});

ownInclude ​

  • Тип: (haystack: any, needle: any, message?: string) => void

Утверждает, что haystack содержит needle как собственное свойство (не унаследованное). Может использоваться для проверки наличия подмножества свойств в объекте, игнорируя унаследованные свойства.

ts
import { assert, test } from 'vitest';

test('assert.ownInclude', () => {
  assert.ownInclude({ a: 1 }, { a: 1 });
});

notOwnInclude ​

  • Тип: (haystack: any, needle: any, message?: string) => void

Утверждает, что haystack не содержит needle как собственное свойство (не унаследованное). Может использоваться для проверки отсутствия подмножества свойств в объекте, игнорируя унаследованные свойства.

ts
import { assert, test } from 'vitest';

const obj1 = {
  b: 2,
};

const obj2 = Object.create(obj1);
obj2.a = 1;

test('assert.notOwnInclude', () => {
  assert.notOwnInclude(obj2, { b: 2 });
});

deepOwnInclude ​

  • Тип: (haystack: any, needle: any, message?: string) => void

Утверждает, что haystack содержит needle, проверяя глубокое равенство и игнорируя унаследованные свойства. Используется для проверки наличия подмножества свойств в объекте.

ts
import { assert, test } from 'vitest';

test('assert.deepOwnInclude', () => {
  assert.deepOwnInclude({ a: { b: 2 } }, { a: { b: 2 } });
});

notDeepOwnInclude ​

  • Тип: (haystack: any, needle: any, message?: string) => void

Утверждает, что haystack не содержит needle, проверяя глубокое равенство и игнорируя унаследованные свойства. Используется для проверки отсутствия подмножества свойств в объекте.

ts
import { assert, test } from 'vitest';

test('assert.notDeepOwnInclude', () => {
  assert.notDeepOwnInclude({ a: { b: 2 } }, { a: { c: 3 } });
});

match ​

  • Тип: (value: string, regexp: RegExp, message?: string) => void

Утверждает, что строка value соответствует регулярному выражению regexp.

ts
import { assert, test } from 'vitest';

test('assert.match', () => {
  assert.match('foobar', /^foo/, 'regexp matches');
});

notMatch ​

  • Тип: (value: string, regexp: RegExp, message?: string) => void

Утверждает, что строка value не соответствует регулярному выражению regexp.

ts
import { assert, test } from 'vitest';

test('assert.notMatch', () => {
  assert.notMatch('foobar', /^foo/, 'regexp does not match');
});

property ​

  • Тип: <T>(object: T, property: string, message?: string) => void

Утверждает, что object имеет свойство с именем property, как унаследованное, так и собственное.

ts
import { assert, test } from 'vitest';

test('assert.property', () => {
  assert.property({ tea: { green: 'matcha' } }, 'tea');
  assert.property({ tea: { green: 'matcha' } }, 'toString');
});

notProperty ​

  • Тип: <T>(object: T, property: string, message?: string) => void

Утверждает, что object не имеет свойства с именем property, ни унаследованного, ни собственного.

ts
import { assert, test } from 'vitest';

test('assert.notProperty', () => {
  assert.notProperty({ tea: { green: 'matcha' } }, 'coffee');
});

propertyVal ​

  • Тип: <T, V>(object: T, property: string, value: V, message?: string) => void

Утверждает, что object имеет свойство с именем property со значением value. Используется строгое сравнение (===). Свойство может быть как унаследованным, так и собственным.

ts
import { assert, test } from 'vitest';

test('assert.propertyVal', () => {
  assert.propertyVal({ tea: 'is good' }, 'tea', 'is good');
});

notPropertyVal ​

  • Тип: <T, V>(object: T, property: string, value: V, message?: string) => void

Утверждает, что object не имеет свойства с именем property со значением value. Используется строгое сравнение (===). Свойство может быть как унаследованным, так и собственным.

ts
import { assert, test } from 'vitest';

test('assert.notPropertyVal', () => {
  assert.notPropertyVal({ tea: 'is good' }, 'tea', 'is bad');
  assert.notPropertyVal({ tea: 'is good' }, 'coffee', 'is good');
});

deepPropertyVal ​

  • Тип: <T, V>(object: T, property: string, value: V, message?: string) => void

Утверждает, что object имеет свойство с именем property со значением value. Используется глубокое сравнение. Свойство может быть как унаследованным, так и собственным.

ts
import { assert, test } from 'vitest';

test('assert.deepPropertyVal', () => {
  assert.deepPropertyVal({ tea: { green: 'matcha' } }, 'tea', {
    green: 'matcha',
  });
});

notDeepPropertyVal ​

  • Тип: <T, V>(object: T, property: string, value: V, message?: string) => void

Утверждает, что object не имеет свойства с именем property со значением value. Используется глубокое сравнение. Свойство может быть как унаследованным, так и собственным.

ts
import { assert, test } from 'vitest';

test('assert.notDeepPropertyVal', () => {
  assert.notDeepPropertyVal({ tea: { green: 'matcha' } }, 'tea', {
    black: 'matcha',
  });
  assert.notDeepPropertyVal({ tea: { green: 'matcha' } }, 'tea', {
    green: 'oolong',
  });
  assert.notDeepPropertyVal({ tea: { green: 'matcha' } }, 'coffee', {
    green: 'matcha',
  });
});

nestedProperty ​

  • Тип: <T>(object: T, property: string, message?: string) => void

Утверждает, что object имеет вложенное свойство, указанное строкой property, использующей точечную или скобочную нотацию. Свойство может быть как унаследованным, так и собственным.

ts
import { assert, test } from 'vitest';

test('assert.nestedProperty', () => {
  assert.nestedProperty({ tea: { green: 'matcha' } }, 'tea.green');
});

notNestedProperty ​

  • Тип: <T>(object: T, property: string, message?: string) => void

Утверждает, что object не имеет вложенного свойства, указанного строкой property, использующей точечную или скобочную нотацию. Свойство может быть как унаследованным, так и собственным.

ts
import { assert, test } from 'vitest';

test('assert.notNestedProperty', () => {
  assert.notNestedProperty({ tea: { green: 'matcha' } }, 'tea.oolong');
});

nestedPropertyVal ​

  • Тип: <T>(object: T, property: string, value: any, message?: string) => void

Утверждает, что object имеет вложенное свойство, указанное строкой property, использующей точечную или скобочную нотацию, со значением value. Используется строгое сравнение (===).

ts
import { assert, test } from 'vitest';

test('assert.nestedPropertyVal', () => {
  assert.nestedPropertyVal({ tea: { green: 'matcha' } }, 'tea.green', 'matcha');
});

notNestedPropertyVal ​

  • Тип: <T>(object: T, property: string, value: any, message?: string) => void

Утверждает, что object не имеет вложенного свойства, указанного строкой property, использующей точечную или скобочную нотацию, со значением value. Используется строгое сравнение (===).

ts
import { assert, test } from 'vitest';

test('assert.notNestedPropertyVal', () => {
  assert.notNestedPropertyVal(
    { tea: { green: 'matcha' } },
    'tea.green',
    'konacha'
  );
  assert.notNestedPropertyVal(
    { tea: { green: 'matcha' } },
    'coffee.green',
    'matcha'
  );
});

deepNestedPropertyVal ​

  • Тип: <T>(object: T, property: string, value: any, message?: string) => void

Утверждает, что object имеет вложенное свойство, указанное строкой property, использующей точечную или скобочную нотацию, со значением value. Используется глубокое сравнение.

ts
import { assert, test } from 'vitest';

test('assert.notNestedPropertyVal', () => {
  assert.notNestedPropertyVal(
    { tea: { green: 'matcha' } },
    'tea.green',
    'konacha'
  );
  assert.notNestedPropertyVal(
    { tea: { green: 'matcha' } },
    'coffee.green',
    'matcha'
  );
});

notDeepNestedPropertyVal ​

  • Тип: <T>(object: T, property: string, value: any, message?: string) => void

Утверждает, что object не имеет вложенного свойства, указанного строкой property, использующей точечную или скобочную нотацию, со значением value. Используется глубокое сравнение.

ts
import { assert, test } from 'vitest';

test('assert.notDeepNestedPropertyVal', () => {
  assert.notDeepNestedPropertyVal(
    { tea: { green: { matcha: 'yum' } } },
    'tea.green',
    { oolong: 'yum' }
  );
  assert.notDeepNestedPropertyVal(
    { tea: { green: { matcha: 'yum' } } },
    'tea.green',
    { matcha: 'yuck' }
  );
  assert.notDeepNestedPropertyVal(
    { tea: { green: { matcha: 'yum' } } },
    'tea.black',
    { matcha: 'yum' }
  );
});

lengthOf ​

  • Тип: <T extends { readonly length?: number | undefined } | { readonly size?: number | undefined }>(object: T, length: number, message?: string) => void

Утверждает, что object имеет свойство length или size с ожидаемым значением length.

ts
import { assert, test } from 'vitest';

test('assert.lengthOf', () => {
  assert.lengthOf([1, 2, 3], 3, 'array has length of 3');
  assert.lengthOf('foobar', 6, 'string has length of 6');
  assert.lengthOf(new Set([1, 2, 3]), 3, 'set has size of 3');
  assert.lengthOf(
    new Map([
      ['a', 1],
      ['b', 2],
      ['c', 3],
    ]),
    3,
    'map has size of 3'
  );
});

hasAnyKeys ​

  • Тип: <T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string) => void

Утверждает, что object имеет хотя бы один из ключей, указанных в keys. Вместо массива ключей можно передать объект, ключи которого будут использованы в качестве ожидаемого набора ключей.

ts
import { assert, test } from 'vitest';

test('assert.hasAnyKeys', () => {
  assert.hasAnyKeys({ foo: 1, bar: 2, baz: 3 }, ['foo', 'iDontExist', 'baz']);
  assert.hasAnyKeys(
    { foo: 1, bar: 2, baz: 3 },
    { foo: 30, iDontExist: 99, baz: 1337 }
  );
  assert.hasAnyKeys(
    new Map([
      [{ foo: 1 }, 'bar'],
      ['key', 'value'],
    ]),
    [{ foo: 1 }, 'key']
  );
  assert.hasAnyKeys(new Set([{ foo: 'bar' }, 'anotherKey']), [
    { foo: 'bar' },
    'anotherKey',
  ]);
});

hasAllKeys ​

  • Тип: <T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string) => void

Утверждает, что object имеет все и только все ключи, указанные в keys. Вместо массива ключей можно передать объект, ключи которого будут использованы в качестве ожидаемого набора ключей.

ts
import { assert, test } from 'vitest';

test('assert.hasAllKeys', () => {
  assert.hasAllKeys({ foo: 1, bar: 2, baz: 3 }, ['foo', 'bar', 'baz']);
  assert.hasAllKeys(
    { foo: 1, bar: 2, baz: 3 },
    { foo: 30, bar: 99, baz: 1337 }
  );
  assert.hasAllKeys(
    new Map([
      [{ foo: 1 }, 'bar'],
      ['key', 'value'],
    ]),
    [{ foo: 1 }, 'key']
  );
  assert.hasAllKeys(
    new Set([{ foo: 'bar' }, 'anotherKey'], [{ foo: 'bar' }, 'anotherKey'])
  );
});

containsAllKeys ​

  • Тип: <T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string) => void

Утверждает, что object содержит все ключи, указанные в keys, и может содержать дополнительные ключи, не указанные в списке. Вместо массива ключей можно передать объект, ключи которого будут использованы в качестве ожидаемого набора ключей.

ts
import { assert, test } from 'vitest';

test('assert.containsAllKeys', () => {
  assert.containsAllKeys({ foo: 1, bar: 2, baz: 3 }, ['foo', 'baz']);
  assert.containsAllKeys({ foo: 1, bar: 2, baz: 3 }, ['foo', 'bar', 'baz']);
  assert.containsAllKeys({ foo: 1, bar: 2, baz: 3 }, { foo: 30, baz: 1337 });
  assert.containsAllKeys(
    { foo: 1, bar: 2, baz: 3 },
    { foo: 30, bar: 99, baz: 1337 }
  );
  assert.containsAllKeys(
    new Map([
      [{ foo: 1 }, 'bar'],
      ['key', 'value'],
    ]),
    [{ foo: 1 }]
  );
  assert.containsAllKeys(
    new Map([
      [{ foo: 1 }, 'bar'],
      ['key', 'value'],
    ]),
    [{ foo: 1 }, 'key']
  );
  assert.containsAllKeys(
    new Set([{ foo: 'bar' }, 'anotherKey'], [{ foo: 'bar' }])
  );
  assert.containsAllKeys(
    new Set([{ foo: 'bar' }, 'anotherKey'], [{ foo: 'bar' }, 'anotherKey'])
  );
});

doesNotHaveAnyKeys ​

  • Type: <T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string) => void

Утверждает, что object не содержит ни одного из ключей, указанных в keys. Вместо массива ключей можно передать объект, ключи которого будут использованы в качестве набора проверяемых ключей.

ts
import { assert, test } from 'vitest';

test('assert.doesNotHaveAnyKeys', () => {
  assert.doesNotHaveAnyKeys({ foo: 1, bar: 2, baz: 3 }, [
    'one',
    'two',
    'example',
  ]);
  assert.doesNotHaveAnyKeys(
    { foo: 1, bar: 2, baz: 3 },
    { one: 1, two: 2, example: 'foo' }
  );
  assert.doesNotHaveAnyKeys(
    new Map([
      [{ foo: 1 }, 'bar'],
      ['key', 'value'],
    ]),
    [{ one: 'two' }, 'example']
  );
  assert.doesNotHaveAnyKeys(
    new Set([{ foo: 'bar' }, 'anotherKey'], [{ one: 'two' }, 'example'])
  );
});

doesNotHaveAllKeys ​

  • Type: <T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string) => void

Утверждает, что object не содержит хотя бы один из ключей, указанных в keys. Вместо массива ключей можно передать объект, ключи которого будут использованы в качестве набора проверяемых ключей.

ts
import { assert, test } from 'vitest';

test('assert.doesNotHaveAllKeys', () => {
  assert.doesNotHaveAnyKeys({ foo: 1, bar: 2, baz: 3 }, [
    'one',
    'two',
    'example',
  ]);
  assert.doesNotHaveAnyKeys(
    { foo: 1, bar: 2, baz: 3 },
    { one: 1, two: 2, example: 'foo' }
  );
  assert.doesNotHaveAnyKeys(
    new Map([
      [{ foo: 1 }, 'bar'],
      ['key', 'value'],
    ]),
    [{ one: 'two' }, 'example']
  );
  assert.doesNotHaveAnyKeys(new Set([{ foo: 'bar' }, 'anotherKey']), [
    { one: 'two' },
    'example',
  ]);
});

hasAnyDeepKeys ​

  • Type: <T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string) => void

Утверждает, что object содержит хотя бы один из ключей, указанных в keys. Поскольку Set и Map могут содержать объекты в качестве ключей, это утверждение позволяет выполнять глубокое сравнение ключей. Вместо массива ключей можно передать объект, ключи которого будут использованы в качестве набора проверяемых ключей.

ts
import { assert, test } from 'vitest';

test('assert.hasAnyDeepKeys', () => {
  assert.hasAnyDeepKeys(
    new Map([
      [{ one: 'one' }, 'valueOne'],
      [1, 2],
    ]),
    { one: 'one' }
  );
  assert.hasAnyDeepKeys(
    new Map([
      [{ one: 'one' }, 'valueOne'],
      [1, 2],
    ]),
    [{ one: 'one' }, { two: 'two' }]
  );
  assert.hasAnyDeepKeys(
    new Map([
      [{ one: 'one' }, 'valueOne'],
      [{ two: 'two' }, 'valueTwo'],
    ]),
    [{ one: 'one' }, { two: 'two' }]
  );
  assert.hasAnyDeepKeys(new Set([{ one: 'one' }, { two: 'two' }]), {
    one: 'one',
  });
  assert.hasAnyDeepKeys(new Set([{ one: 'one' }, { two: 'two' }]), [
    { one: 'one' },
    { three: 'three' },
  ]);
  assert.hasAnyDeepKeys(new Set([{ one: 'one' }, { two: 'two' }]), [
    { one: 'one' },
    { two: 'two' },
  ]);
});

hasAllDeepKeys ​

  • Type: <T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string) => void

Утверждает, что object содержит все ключи, указанные в keys, и только их. Поскольку Set и Map могут содержать объекты в качестве ключей, это утверждение позволяет выполнять глубокое сравнение ключей. Вместо массива ключей можно передать объект, ключи которого будут использованы в качестве набора проверяемых ключей.

ts
import { assert, test } from 'vitest';

test('assert.hasAllDeepKeys', () => {
  assert.hasAllDeepKeys(new Map([[{ one: 'one' }, 'valueOne']]), {
    one: 'one',
  });
  assert.hasAllDeepKeys(
    new Map([
      [{ one: 'one' }, 'valueOne'],
      [{ two: 'two' }, 'valueTwo'],
    ]),
    [{ one: 'one' }, { two: 'two' }]
  );
  assert.hasAllDeepKeys(new Set([{ one: 'one' }]), { one: 'one' });
  assert.hasAllDeepKeys(new Set([{ one: 'one' }, { two: 'two' }]), [
    { one: 'one' },
    { two: 'two' },
  ]);
});

containsAllDeepKeys ​

  • Type: <T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string) => void

Утверждает, что object содержит все ключи, указанные в keys. Поскольку Set и Map могут содержать объекты в качестве ключей, это утверждение позволяет выполнять глубокое сравнение ключей. Вместо массива ключей можно передать объект, ключи которого будут использованы в качестве набора проверяемых ключей.

ts
import { assert, test } from 'vitest';

test('assert.containsAllDeepKeys', () => {
  assert.containsAllDeepKeys(
    new Map([
      [{ one: 'one' }, 'valueOne'],
      [1, 2],
    ]),
    { one: 'one' }
  );
  assert.containsAllDeepKeys(
    new Map([
      [{ one: 'one' }, 'valueOne'],
      [{ two: 'two' }, 'valueTwo'],
    ]),
    [{ one: 'one' }, { two: 'two' }]
  );
  assert.containsAllDeepKeys(new Set([{ one: 'one' }, { two: 'two' }]), {
    one: 'one',
  });
  assert.containsAllDeepKeys(new Set([{ one: 'one' }, { two: 'two' }]), [
    { one: 'one' },
    { two: 'two' },
  ]);
});

doesNotHaveAnyDeepKeys ​

  • Type: <T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string) => void

Утверждает, что object не содержит ни одного из ключей, указанных в keys. Поскольку Set и Map могут содержать объекты в качестве ключей, это утверждение позволяет выполнять глубокое сравнение ключей. Вместо массива ключей можно передать объект, ключи которого будут использованы в качестве набора проверяемых ключей.

ts
import { assert, test } from 'vitest';

test('assert.doesNotHaveAnyDeepKeys', () => {
  assert.doesNotHaveAnyDeepKeys(
    new Map([
      [{ one: 'one' }, 'valueOne'],
      [1, 2],
    ]),
    { thisDoesNot: 'exist' }
  );
  assert.doesNotHaveAnyDeepKeys(
    new Map([
      [{ one: 'one' }, 'valueOne'],
      [{ two: 'two' }, 'valueTwo'],
    ]),
    [{ twenty: 'twenty' }, { fifty: 'fifty' }]
  );
  assert.doesNotHaveAnyDeepKeys(new Set([{ one: 'one' }, { two: 'two' }]), {
    twenty: 'twenty',
  });
  assert.doesNotHaveAnyDeepKeys(new Set([{ one: 'one' }, { two: 'two' }]), [
    { twenty: 'twenty' },
    { fifty: 'fifty' },
  ]);
});

doesNotHaveAllDeepKeys ​

  • Type: <T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string) => void

Утверждает, что object не содержит хотя бы один из ключей, указанных в keys. Поскольку Set и Map могут содержать объекты в качестве ключей, это утверждение позволяет выполнять глубокое сравнение ключей. Вместо массива ключей можно передать объект, ключи которого будут использованы в качестве набора проверяемых ключей.

ts
import { assert, test } from 'vitest';

test('assert.doesNotHaveAllDeepKeys', () => {
  assert.doesNotHaveAllDeepKeys(
    new Map([
      [{ one: 'one' }, 'valueOne'],
      [1, 2],
    ]),
    { thisDoesNot: 'exist' }
  );
  assert.doesNotHaveAllDeepKeys(
    new Map([
      [{ one: 'one' }, 'valueOne'],
      [{ two: 'two' }, 'valueTwo'],
    ]),
    [{ twenty: 'twenty' }, { one: 'one' }]
  );
  assert.doesNotHaveAllDeepKeys(new Set([{ one: 'one' }, { two: 'two' }]), {
    twenty: 'twenty',
  });
  assert.doesNotHaveAllDeepKeys(new Set([{ one: 'one' }, { two: 'two' }]), [
    { one: 'one' },
    { fifty: 'fifty' },
  ]);
});

throws ​

  • Type:
    • (fn: () => void, errMsgMatcher?: RegExp | string, ignored?: any, message?: string) => void
    • (fn: () => void, errorLike?: ErrorConstructor | Error | null, errMsgMatcher?: RegExp | string | null, message?: string) => void
  • Alias:
    • throw
    • Throw

Если errorLike является конструктором Error, утверждает, что вызов функции fn приведет к выбросу ошибки, являющейся экземпляром errorLike. Если errorLike является экземпляром Error, утверждает, что выброшенная ошибка является тем же самым экземпляром, что и errorLike. Если указан errMsgMatcher, также проверяется, что сообщение выброшенной ошибки соответствует errMsgMatcher.

ts
import { assert, test } from 'vitest';

test('assert.throws', () => {
  assert.throws(fn, 'Error thrown must have this msg');
  assert.throws(fn, /Error thrown must have a msg that matches this/);
  assert.throws(fn, ReferenceError);
  assert.throws(fn, errorInstance);
  assert.throws(
    fn,
    ReferenceError,
    'Error thrown must be a ReferenceError and have this msg'
  );
  assert.throws(
    fn,
    errorInstance,
    'Error thrown must be the same errorInstance and have this msg'
  );
  assert.throws(
    fn,
    ReferenceError,
    /Error thrown must be a ReferenceError and match this/
  );
  assert.throws(
    fn,
    errorInstance,
    /Error thrown must be the same errorInstance and match this/
  );
});

doesNotThrow ​

  • Type: (fn: () => void, errMsgMatcher?: RegExp | string, ignored?: any, message?: string) => void
  • Type: (fn: () => void, errorLike?: ErrorConstructor | Error | null, errMsgMatcher?: RegExp | string | null, message?: string) => void

Если errorLike является конструктором Error, утверждает, что вызов функции fn не приведет к выбросу ошибки, являющейся экземпляром errorLike. Если errorLike является экземпляром Error, утверждает, что выброшенная ошибка не является тем же самым экземпляром, что и errorLike. Если указан errMsgMatcher, также проверяется, что сообщение выброшенной ошибки (если она будет выброшена) не соответствует errMsgMatcher.

ts
import { assert, test } from 'vitest';

test('assert.doesNotThrow', () => {
  assert.doesNotThrow(fn, 'Any Error thrown must not have this message');
  assert.doesNotThrow(fn, /Any Error thrown must not match this/);
  assert.doesNotThrow(fn, Error);
  assert.doesNotThrow(fn, errorInstance);
  assert.doesNotThrow(fn, Error, 'Error must not have this message');
  assert.doesNotThrow(fn, errorInstance, 'Error must not have this message');
  assert.doesNotThrow(fn, Error, /Error must not match this/);
  assert.doesNotThrow(fn, errorInstance, /Error must not match this/);
});

operator ​

  • Type: (val1: OperatorComparable, operator: Operator, val2: OperatorComparable, message?: string) => void

Сравнивает val1 и val2 с использованием оператора operator.

ts
import { assert, test } from 'vitest';

test('assert.operator', () => {
  assert.operator(1, '<', 2, 'everything is ok');
});

closeTo ​

  • Type: (actual: number, expected: number, delta: number, message?: string) => void
  • Alias: approximately

Утверждает, что actual (фактическое значение) находится в пределах +/- delta (дельта) от expected (ожидаемого значения).

ts
import { assert, test } from 'vitest';

test('assert.closeTo', () => {
  assert.closeTo(1.5, 1, 0.5, 'numbers are close');
});

sameMembers ​

  • Type: <T>(set1: T[], set2: T[], message?: string) => void

Утверждает, что set1 и set2 содержат одни и те же элементы, порядок не имеет значения. Используется строгое сравнение на равенство (===).

ts
import { assert, test } from 'vitest';

test('assert.sameMembers', () => {
  assert.sameMembers([1, 2, 3], [2, 1, 3], 'same members');
});

notSameMembers ​

  • Type: <T>(set1: T[], set2: T[], message?: string) => void

Утверждает, что set1 и set2 не содержат одни и те же элементы, порядок не имеет значения. Используется строгое сравнение на равенство (===).

ts
import { assert, test } from 'vitest';

test('assert.sameMembers', () => {
  assert.notSameMembers([1, 2, 3], [5, 1, 3], 'not same members');
});

sameDeepMembers ​

  • Type: <T>(set1: T[], set2: T[], message?: string) => void

Утверждает, что set1 и set2 содержат одни и те же элементы, порядок не имеет значения. Используется глубокое сравнение на равенство.

ts
import { assert, test } from 'vitest';

test('assert.sameDeepMembers', () => {
  assert.sameDeepMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { c: 3 }],
    'same deep members'
  );
});

notSameDeepMembers ​

  • Type: <T>(set1: T[], set2: T[], message?: string) => void

Утверждает, что set1 и set2 не содержат одни и те же элементы, порядок не имеет значения. Используется глубокое сравнение на равенство.

ts
import { assert, test } from 'vitest';

test('assert.sameDeepMembers', () => {
  assert.sameDeepMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { c: 3 }],
    'same deep members'
  );
});

sameOrderedMembers ​

  • Type: <T>(set1: T[], set2: T[], message?: string) => void

Утверждает, что set1 и set2 содержат одни и те же элементы в одном и том же порядке. Используется строгое сравнение на равенство (===).

ts
import { assert, test } from 'vitest';

test('assert.sameOrderedMembers', () => {
  assert.sameOrderedMembers([1, 2, 3], [1, 2, 3], 'same ordered members');
});

notSameOrderedMembers ​

  • Type: <T>(set1: T[], set2: T[], message?: string) => void

Утверждает, что set1 и set2 не содержат одни и те же элементы в одном и том же порядке. Используется строгое сравнение на равенство (===).

ts
import { assert, test } from 'vitest';

test('assert.notSameOrderedMembers', () => {
  assert.notSameOrderedMembers(
    [1, 2, 3],
    [2, 1, 3],
    'not same ordered members'
  );
});

sameDeepOrderedMembers ​

  • Type: <T>(set1: T[], set2: T[], message?: string) => void

Утверждает, что set1 и set2 содержат одни и те же элементы в одном и том же порядке. Используется глубокое сравнение на равенство.

ts
import { assert, test } from 'vitest';

test('assert.sameDeepOrderedMembers', () => {
  assert.sameDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    'same deep ordered members'
  );
});

notSameDeepOrderedMembers ​

  • Type: <T>(set1: T[], set2: T[], message?: string) => void

Утверждает, что массивы set1 и set2 не содержат одинаковые элементы в одинаковом порядке. Использует глубокое сравнение на равенство.

ts
import { assert, test } from 'vitest';

test('assert.notSameDeepOrderedMembers', () => {
  assert.notSameDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ a: 1 }, { b: 2 }, { z: 5 }],
    'not same deep ordered members'
  );
  assert.notSameDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { c: 3 }],
    'not same deep ordered members'
  );
});

includeMembers ​

  • Type: <T>(superset: T[], subset: T[], message?: string) => void

Утверждает, что массив subset является подмножеством массива superset, порядок элементов не важен. Использует строгое сравнение на равенство. Дубликаты в subset игнорируются.

ts
import { assert, test } from 'vitest';

test('assert.includeMembers', () => {
  assert.includeMembers([1, 2, 3], [2, 1, 2], 'include members');
});

notIncludeMembers ​

  • Type: <T>(superset: T[], subset: T[], message?: string) => void

Утверждает, что массив subset не является подмножеством массива superset, порядок элементов не важен. Использует строгое сравнение на равенство. Дубликаты в subset игнорируются.

ts
import { assert, test } from 'vitest';

test('assert.notIncludeMembers', () => {
  assert.notIncludeMembers([1, 2, 3], [5, 1], 'not include members');
});

includeDeepMembers ​

  • Type: <T>(superset: T[], subset: T[], message?: string) => void

Утверждает, что массив subset является подмножеством массива superset, порядок элементов не важен. Использует глубокое сравнение на равенство. Дубликаты в subset игнорируются.

ts
import { assert, test } from 'vitest';

test('assert.includeDeepMembers', () => {
  assert.includeDeepMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { b: 2 }],
    'include deep members'
  );
});

notIncludeDeepMembers ​

  • Type: <T>(superset: T[], subset: T[], message?: string) => void

Утверждает, что массив subset не является подмножеством массива superset, порядок элементов не важен. Использует глубокое сравнение на равенство. Дубликаты в subset игнорируются.

ts
import { assert, test } from 'vitest';

test('assert.notIncludeDeepMembers', () => {
  assert.notIncludeDeepMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { f: 5 }],
    'not include deep members'
  );
});

includeOrderedMembers ​

  • Type: <T>(superset: T[], subset: T[], message?: string) => void

Утверждает, что массив subset содержится в массиве superset в том же порядке, начиная с первого элемента в superset. Использует строгое сравнение на равенство.

ts
import { assert, test } from 'vitest';

test('assert.includeOrderedMembers', () => {
  assert.includeOrderedMembers([1, 2, 3], [1, 2], 'include ordered members');
});

notIncludeOrderedMembers ​

  • Type: <T>(superset: T[], subset: T[], message?: string) => void

Утверждает, что массив subset не содержится в массиве superset в том же порядке, начиная с первого элемента в superset. Использует строгое сравнение на равенство.

ts
import { assert, test } from 'vitest';

test('assert.notIncludeOrderedMembers', () => {
  assert.notIncludeOrderedMembers(
    [1, 2, 3],
    [2, 1],
    'not include ordered members'
  );
  assert.notIncludeOrderedMembers(
    [1, 2, 3],
    [2, 3],
    'not include ordered members'
  );
});

includeDeepOrderedMembers ​

  • Type: <T>(superset: T[], subset: T[], message?: string) => void

Утверждает, что массив subset содержится в массиве superset в том же порядке, начиная с первого элемента в superset. Использует глубокое сравнение на равенство.

ts
import { assert, test } from 'vitest';

test('assert.includeDeepOrderedMembers', () => {
  assert.includeDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ a: 1 }, { b: 2 }],
    'include deep ordered members'
  );
});

notIncludeDeepOrderedMembers ​

  • Type: <T>(superset: T[], subset: T[], message?: string) => void

Утверждает, что массив subset не содержится в массиве superset в том же порядке, начиная с первого элемента в superset. Использует глубокое сравнение на равенство.

ts
import { assert, test } from 'vitest';

test('assert.includeDeepOrderedMembers', () => {
  assert.notIncludeDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ a: 1 }, { f: 5 }],
    'not include deep ordered members'
  );
  assert.notIncludeDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }],
    'not include deep ordered members'
  );
  assert.notIncludeDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { c: 3 }],
    'not include deep ordered members'
  );
});

oneOf ​

  • Type: <T>(inList: T, list: T[], message?: string) => void

Утверждает, что значение inList (не являющееся объектом или массивом) присутствует в массиве list.

ts
import { assert, test } from 'vitest';

test('assert.oneOf', () => {
  assert.oneOf(1, [2, 1], 'Not found in list');
});

changes ​

  • Type: <T>(modifier: Function, object: T, property: string, message?: string) => void

Утверждает, что функция modifier изменяет свойство property объекта object.

ts
import { assert, test } from 'vitest';

test('assert.changes', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val = 22;
  }
  assert.changes(fn, obj, 'val');
});

changesBy ​

  • Type: <T>(modifier: Function, object: T, property: string, change: number, message?: string) => void

Утверждает, что функция modifier изменяет свойство property объекта object на величину change.

ts
import { assert, test } from 'vitest';

test('assert.changesBy', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val += 2;
  }
  assert.changesBy(fn, obj, 'val', 2);
});

doesNotChange ​

  • Type: <T>(modifier: Function, object: T, property: string, message?: string) => void

Утверждает, что функция modifier не изменяет свойство property объекта object.

ts
import { assert, test } from 'vitest';

test('assert.doesNotChange', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val += 2;
  }
  assert.doesNotChange(fn, obj, 'val');
});

changesButNotBy ​

  • Type: <T>(modifier: Function, object: T, property: string, change:number, message?: string) => void

Утверждает, что функция modifier изменяет свойство property объекта object, но не на величину change.

ts
import { assert, test } from 'vitest';

test('assert.changesButNotBy', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val += 10;
  }
  assert.changesButNotBy(fn, obj, 'val', 5);
});

increases ​

  • Type: <T>(modifier: Function, object: T, property: string, message?: string) => void

Утверждает, что функция modifier увеличивает числовое значение свойства property объекта object.

ts
import { assert, test } from 'vitest';

test('assert.increases', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val = 13;
  }
  assert.increases(fn, obj, 'val');
});

increasesBy ​

  • Type: <T>(modifier: Function, object: T, property: string, change: number, message?: string) => void

Утверждает, что функция modifier увеличивает числовое значение свойства property объекта object на величину change.

ts
import { assert, test } from 'vitest';

test('assert.increases', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val += 10;
  }
  assert.increasesBy(fn, obj, 'val', 10);
});

doesNotIncrease ​

  • Type: <T>(modifier: Function, object: T, property: string, message?: string) => void

Утверждает, что функция modifier не увеличивает числовое значение свойства property объекта object.

ts
import { assert, test } from 'vitest';

test('assert.doesNotIncrease', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val = 8;
  }
  assert.doesNotIncrease(fn, obj, 'val');
});

increasesButNotBy ​

  • Type: <T>(modifier: Function, object: T, property: string, change: number, message?: string) => void

Утверждает, что функция modifier увеличивает числовое значение свойства property объекта object, но не на величину change.

ts
import { assert, test } from 'vitest';

test('assert.increasesButNotBy', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val += 15;
  }
  assert.increasesButNotBy(fn, obj, 'val', 10);
});

decreases ​

  • Type: <T>(modifier: Function, object: T, property: string, message?: string) => void

Утверждает, что функция modifier уменьшает числовое значение свойства property объекта object.

ts
import { assert, test } from 'vitest';

test('assert.decreases', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val = 5;
  }
  assert.decreases(fn, obj, 'val');
});

decreasesBy ​

  • Type: <T>(modifier: Function, object: T, property: string, change: number, message?: string) => void

Утверждает, что функция modifier уменьшает числовое значение свойства property объекта object на величину change.

ts
import { assert, test } from 'vitest';

test('assert.decreasesBy', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val -= 5;
  }
  assert.decreasesBy(fn, obj, 'val', 5);
});

doesNotDecrease ​

  • Type: <T>(modifier: Function, object: T, property: string, message?: string) => void

Утверждает, что функция modifier не уменьшает числовое значение свойства property объекта object.

ts
import { assert, test } from 'vitest';

test('assert.doesNotDecrease', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val = 15;
  }
  assert.doesNotDecrease(fn, obj, 'val');
});

doesNotDecreaseBy ​

  • Тип: <T>(modifier: Function, object: T, property: string, change: number, message?: string) => void

Утверждает, что функция modifier не уменьшает числовое свойство property объекта object или возвращаемое значение modifier на величину change.

ts
import { assert, test } from 'vitest';

test('assert.doesNotDecreaseBy', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val = 5;
  }
  assert.doesNotDecreaseBy(fn, obj, 'val', 1);
});

decreasesButNotBy ​

  • Тип: <T>(modifier: Function, object: T, property: string, change: number, message?: string) => void

Утверждает, что функция modifier уменьшает числовое свойство property объекта object или возвращаемое значение modifier, но не на величину change.

ts
import { assert, test } from 'vitest';

test('assert.decreasesButNotBy', () => {
  const obj = { val: 10 };
  function fn() {
    obj.val = 5;
  }
  assert.decreasesButNotBy(fn, obj, 'val', 1);
});

ifError ​

  • Тип: <T>(object: T, message?: string) => void

Утверждает, что object является ложным значением (falsy value), и выбрасывает исключение, если это так. Это добавлено для обеспечения прямой замены класса assert из Node с помощью chai.

ts
import { assert, test } from 'vitest';

test('assert.ifError', () => {
  const err = new Error('I am a custom error');
  assert.ifError(err); // Rethrows err!
});

isExtensible ​

  • Тип: <T>(object: T, message?: string) => void
  • Псевдоним: extensible

Утверждает, что object является расширяемым (к нему можно добавлять новые свойства).

ts
import { assert, test } from 'vitest';

test('assert.isExtensible', () => {
  assert.isExtensible({});
});

isNotExtensible ​

  • Тип: <T>(object: T, message?: string) => void
  • Псевдоним: notExtensible

Утверждает, что object не является расширяемым (к нему нельзя добавлять новые свойства).

ts
import { assert, test } from 'vitest';

test('assert.isNotExtensible', () => {
  const nonExtensibleObject = Object.preventExtensions({});
  const sealedObject = Object.seal({});
  const frozenObject = Object.freeze({});

  assert.isNotExtensible(nonExtensibleObject);
  assert.isNotExtensible(sealedObject);
  assert.isNotExtensible(frozenObject);
});

isSealed ​

  • Тип: <T>(object: T, message?: string) => void
  • Псевдоним: sealed

Утверждает, что object является запечатанным (нельзя добавлять новые свойства, и существующие свойства нельзя удалить).

ts
import { assert, test } from 'vitest';

test('assert.isSealed', () => {
  const sealedObject = Object.seal({});
  const frozenObject = Object.freeze({});

  assert.isSealed(sealedObject);
  assert.isSealed(frozenObject);
});

isNotSealed ​

  • Тип: <T>(object: T, message?: string) => void
  • Псевдоним: notSealed

Утверждает, что object не является запечатанным (можно добавлять новые свойства, и существующие свойства можно удалять).

ts
import { assert, test } from 'vitest';

test('assert.isNotSealed', () => {
  assert.isNotSealed({});
});

isFrozen ​

  • Тип: <T>(object: T, message?: string) => void
  • Псевдоним: frozen

Утверждает, что object является замороженным (нельзя добавлять новые свойства, и существующие свойства нельзя изменять).

ts
import { assert, test } from 'vitest';

test('assert.isFrozen', () => {
  const frozenObject = Object.freeze({});
  assert.isFrozen(frozenObject);
});

isNotFrozen ​

  • Тип: <T>(object: T, message?: string) => void
  • Псевдоним: notFrozen

Утверждает, что object не является замороженным (можно добавлять новые свойства, и существующие свойства можно изменять).

ts
import { assert, test } from 'vitest';

test('assert.isNotFrozen', () => {
  assert.isNotFrozen({});
});

isEmpty ​

  • Тип: <T>(target: T, message?: string) => void
  • Псевдоним: empty

Утверждает, что target не содержит элементов/значений. Для массивов и строк проверяется свойство length. Для экземпляров Map и Set проверяется свойство size. Для объектов, не являющихся функциями, подсчитывается количество собственных перечисляемых строковых ключей.

ts
import { assert, test } from 'vitest';

test('assert.isEmpty', () => {
  assert.isEmpty([]);
  assert.isEmpty('');
  assert.isEmpty(new Map());
  assert.isEmpty({});
});

isNotEmpty ​

  • Тип: <T>(object: T, message?: string) => void
  • Псевдоним: notEmpty

Утверждает, что target содержит элементы/значения. Для массивов и строк проверяется свойство length. Для экземпляров Map и Set проверяется свойство size. Для объектов, не являющихся функциями, подсчитывается количество собственных перечисляемых строковых ключей.

ts
import { assert, test } from 'vitest';

test('assert.isNotEmpty', () => {
  assert.isNotEmpty([1, 2]);
  assert.isNotEmpty('34');
  assert.isNotEmpty(new Set([5, 6]));
  assert.isNotEmpty({ key: 7 });
});
Pager
Предыдущая страницаexpectTypeOf
Следующая страницаassertType

Выпущено на условиях лицензии MIT.

Авторские права (c) 2024 Mithril Contributors

https://v1.vitest.dev/api/assert

Выпущено на условиях лицензии MIT.

Авторские права (c) 2024 Mithril Contributors