Skip to content
Vitest 1
Main Navigation LeitfadenAPIKonfigurationFortgeschritten
1.6.1
0.34.6

Deutsch

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

Deutsch

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

Aussehen

Sidebar Navigation

Leitfaden

Warum Vitest

Erste Schritte

Features

Arbeitsbereich

Kommandozeilenschnittstelle

Testfilter

Reporter

Codeabdeckung (Coverage)

Snapshot

Mocking

Typen testen

Vitest UI

Browser-Modus

In-Source-Testing

Testkontext

Testumgebung

Erweiterung von Matchern

IDE-Integration

Debugging

Vergleiche mit anderen Test-Runnern

Migrationsleitfaden

Häufige Fehler

Leistungsverbesserung

API

Test API Referenz

Mock-Funktionen

Vi

expect

expectTypeOf

assert

assertType

Konfiguration

Verwaltung der Vitest-Konfigurationsdatei

Vitest konfigurieren

Auf dieser Seite

assert ​

Vitest re-exportiert die assert-Methode von chai zur Überprüfung von Invarianten.

assert ​

  • Typ: (expression: any, message?: string) => asserts expression

Bestätigt, dass der gegebene Ausdruck truthy (als wahr bewertbar) ist; andernfalls schlägt die Assertion fehl.

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

test('assert', () => {
  assert('foo' !== 'bar', 'foo sollte nicht gleich bar sein');
});

fail ​

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

Erzwingt das Fehlschlagen einer Assertion.

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

test('assert.fail', () => {
  assert.fail('Fehlermeldung im Fehlerfall');
  assert.fail('foo', 'bar', 'foo ist nicht bar', '===');
});

isOk ​

  • Typ: <T>(value: T, message?: string) => void
  • Alias: ok

Bestätigt, dass der gegebene value ein Truthy-Wert ist.

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

test('assert.isOk', () => {
  assert.isOk('foo', 'Jeder Truthy-Wert ist in Ordnung');
  assert.isOk(false, 'Dies wird fehlschlagen, da false kein Truthy-Wert ist');
});

isNotOk ​

  • Typ: <T>(value: T, message?: string) => void
  • Alias: notOk

Bestätigt, dass der gegebene value ein Falsy-Wert ist.

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

test('assert.isNotOk', () => {
  assert.isNotOk(
    'foo',
    'Dies wird fehlschlagen, da jeder Truthy-Wert nicht ok ist'
  );
  assert.isNotOk(
    false,
    'Dies wird erfolgreich sein, da false ein Falsy-Wert ist'
  );
});

equal ​

  • Typ: <T>(actual: T, expected: T, message?: string) => void

Bestätigt die nicht-strikte Gleichheit (==) von actual und expected.

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

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

notEqual ​

  • Typ: <T>(actual: T, expected: T, message?: string) => void

Bestätigt die nicht-strikte Ungleichheit (!=) von actual und expected.

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

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

strictEqual ​

  • Typ: <T>(actual: T, expected: T, message?: string) => void

Bestätigt die strikte Gleichheit (===) von actual und expected.

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

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

deepEqual ​

  • Typ: <T>(actual: T, expected: T, message?: string) => void

Bestätigt, dass actual tiefgehend gleich expected ist.

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

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

notDeepEqual ​

  • Typ: <T>(actual: T, expected: T, message?: string) => void

Bestätigt, dass actual nicht tiefgehend gleich expected ist.

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

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

isAbove ​

  • Typ: (valueToCheck: number, valueToBeAbove: number, message?: string) => void

Bestätigt, dass valueToCheck strikt größer ist als valueToBeAbove (>).

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

test('assert.isAbove', () => {
  assert.isAbove(5, 2, '5 ist strikt größer als 2');
});

isAtLeast ​

  • Typ: (valueToCheck: number, valueToBeAtLeast: number, message?: string) => void

Bestätigt, dass valueToCheck größer oder gleich valueToBeAtLeast ist (>=).

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

test('assert.isAtLeast', () => {
  assert.isAtLeast(5, 2, '5 ist größer oder gleich 2');
  assert.isAtLeast(3, 3, '3 ist größer oder gleich 3');
});

isBelow ​

  • Typ: (valueToCheck: number, valueToBeBelow: number, message?: string) => void

Bestätigt, dass valueToCheck strikt kleiner ist als valueToBeBelow (<).

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

test('assert.isBelow', () => {
  assert.isBelow(3, 6, '3 ist strikt kleiner als 6');
});

isAtMost ​

  • Typ: (valueToCheck: number, valueToBeAtMost: number, message?: string) => void

Bestätigt, dass valueToCheck kleiner oder gleich valueToBeAtMost ist (<=).

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

test('assert.isAtMost', () => {
  assert.isAtMost(3, 6, '3 ist kleiner oder gleich 6');
  assert.isAtMost(4, 4, '4 ist kleiner oder gleich 4');
});

isTrue ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value den Wert true hat.

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

const testPassed = true;

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

isNotTrue ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value nicht den Wert true hat.

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

const testPassed = 'ok';

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

isFalse ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value den Wert false hat.

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

const testPassed = false;

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

isNotFalse ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value nicht den Wert false hat.

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

const testPassed = 'no';

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

isNull ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value den Wert null hat.

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

const error = null;

test('assert.isNull', () => {
  assert.isNull(error, 'error ist null');
});

isNotNull ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value nicht den Wert null hat.

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

const error = { message: 'error was occured' };

test('assert.isNotNull', () => {
  assert.isNotNull(error, 'error ist nicht null, sondern ein Objekt');
});

isNaN ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value NaN (Not a Number, keine Zahl) ist.

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

const calculation = 1 * 'vitest';

test('assert.isNaN', () => {
  assert.isNaN(
    calculation,
    '1 * "vitest" ergibt NaN (Not a Number, keine Zahl)'
  );
});

isNotNaN ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value nicht NaN (Not a Number, keine Zahl) ist.

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

const calculation = 1 * 2;

test('assert.isNotNaN', () => {
  assert.isNotNaN(
    calculation,
    '1 * 2 ist nicht NaN (Not a Number, keine Zahl), sondern 2'
  );
});

exists ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value weder null noch undefined ist.

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

const name = 'foo';

test('assert.exists', () => {
  assert.exists(name, 'foo ist weder null noch undefiniert');
});

notExists ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value entweder null oder undefined ist.

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

const foo = null;
const bar = undefined;

test('assert.notExists', () => {
  assert.notExists(foo, 'foo ist null und existiert daher nicht');
  assert.notExists(bar, 'bar ist undefined und existiert daher nicht');
});

isUndefined ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value den Wert undefined hat.

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

const name = undefined;

test('assert.isUndefined', () => {
  assert.isUndefined(name, 'name ist undefined');
});

isDefined ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value nicht den Wert undefined hat.

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

const name = 'foo';

test('assert.isDefined', () => {
  assert.isDefined(name, 'name ist nicht undefined');
});

isFunction ​

  • Typ: <T>(value: T, message?: string) => void
  • Alias: isCallable Bestätigt, dass value eine Funktion ist.
ts
import { assert, test } from 'vitest';

function name() {
  return 'foo';
}

test('assert.isFunction', () => {
  assert.isFunction(name, 'name ist eine Funktion');
});

isNotFunction ​

  • Typ: <T>(value: T, message?: string) => void
  • Alias: isNotCallable

Bestätigt, dass value keine Funktion ist.

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

const name = 'foo';

test('assert.isNotFunction', () => {
  assert.isNotFunction(name, 'name ist keine Funktion, sondern ein String');
});

isObject ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value ein Objekt vom Typ Object ist (wie durch Object.prototype.toString ermittelt). Die Assertion trifft nicht auf Objekte von Subklassen zu.

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

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

test('assert.isObject', () => {
  assert.isObject(someThing, 'someThing ist ein Objekt');
});

isNotObject ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value kein Objekt vom Typ Object ist (ermittelt durch Object.prototype.toString). Die Assertion schlägt fehl, wenn value eine Instanz einer Unterklasse von Object ist.

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

const someThing = 'redCircle';

test('assert.isNotObject', () => {
  assert.isNotObject(
    someThing,
    'someThing ist kein Objekt, sondern ein String.'
  );
});

isArray ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value ein Array ist.

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

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

test('assert.isArray', () => {
  assert.isArray(color, 'color ist ein Array.');
});

isNotArray ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value kein Array ist.

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

const color = 'red';

test('assert.isNotArray', () => {
  assert.isNotArray(color, 'color ist kein Array, sondern ein String.');
});

isString ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value ein String ist.

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

const color = 'red';

test('assert.isString', () => {
  assert.isString(color, 'color ist ein String.');
});

isNotString ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value kein String ist.

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

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

test('assert.isNotString', () => {
  assert.isNotString(color, 'color ist kein String, sondern ein Array.');
});

isNumber ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value eine Zahl ist.

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

const colors = 3;

test('assert.isNumber', () => {
  assert.isNumber(colors, 'colors ist eine Zahl.');
});

isNotNumber ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value keine Zahl ist.

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

const colors = '3 colors';

test('assert.isNotNumber', () => {
  assert.isNotNumber(colors, 'colors ist keine Zahl, sondern ein String.');
});

isFinite ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value eine endliche Zahl ist (weder NaN noch Infinity).

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

const colors = 3;

test('assert.isFinite', () => {
  assert.isFinite(
    colors,
    'colors ist eine endliche Zahl (weder NaN noch Infinity).'
  );
});

isBoolean ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value ein Boolean ist.

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

const isReady = true;

test('assert.isBoolean', () => {
  assert.isBoolean(isReady, 'isReady ist ein Boolean.');
});

isNotBoolean ​

  • Typ: <T>(value: T, message?: string) => void

Bestätigt, dass value kein Boolean ist.

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

const isReady = 'sure';

test('assert.isNotBoolean', () => {
  assert.isNotBoolean(isReady, 'isReady ist kein Boolean, sondern ein String.');
});

typeOf ​

  • Typ: <T>(value: T, name: string, message?: string) => void

Bestätigt, dass der Typ von value name entspricht, ermittelt durch Object.prototype.toString.

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

test('assert.typeOf', () => {
  assert.typeOf({ color: 'red' }, 'object', 'Es handelt sich um ein Objekt.');
  assert.typeOf(['red', 'green'], 'array', 'Es handelt sich um ein Array.');
  assert.typeOf('red', 'string', 'Es handelt sich um einen String.');
  assert.typeOf(
    /red/,
    'regexp',
    'Es handelt sich um einen regulären Ausdruck.'
  );
  assert.typeOf(null, 'null', 'Es handelt sich um einen Nullwert.');
  assert.typeOf(
    undefined,
    'undefined',
    'Es handelt sich um einen undefinierten Wert.'
  );
});

notTypeOf ​

  • Typ: <T>(value: T, name: string, message?: string) => void

Bestätigt, dass der Typ von value nicht name entspricht, ermittelt durch Object.prototype.toString.

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

test('assert.notTypeOf', () => {
  assert.notTypeOf('red', 'number', '"red" ist keine Zahl.');
});

instanceOf ​

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

Bestätigt, dass value eine Instanz von constructor ist.

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 ist eine Instanz von Person.');
  assert.instanceOf(coffee, Tea, 'coffee ist eine Instanz von Tea.');
});

notInstanceOf ​

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

Bestätigt, dass value keine Instanz von constructor ist.

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 ist keine Instanz von Tea.');
});

include ​

  • Typ:
    • (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

Bestätigt, dass haystack needle enthält. Kann verwendet werden, um das Vorhandensein eines Wertes in einem Array, einer Teilzeichenkette in einem String oder einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen.

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

test('assert.include', () => {
  assert.include([1, 2, 3], 2, 'Array enthält Wert.');
  assert.include('foobar', 'foo', 'String enthält Teilzeichenkette.');
  assert.include(
    { foo: 'bar', hello: 'universe' },
    { foo: 'bar' },
    'Objekt enthält Eigenschaft.'
  );
});

notInclude ​

  • Typ:
    • (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

Bestätigt, dass haystack needle nicht enthält. Kann verwendet werden, um das Fehlen eines Wertes in einem Array, einer Teilzeichenkette in einem String oder einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen.

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

test('assert.notInclude', () => {
  assert.notInclude([1, 2, 3], 4, 'Array enthält nicht 4.');
  assert.notInclude('foobar', 'baz', 'foobar enthält nicht baz.');
  assert.notInclude(
    { foo: 'bar', hello: 'universe' },
    { foo: 'baz' },
    'Objekt enthält nicht die Eigenschaft.'
  );
});

deepInclude ​

  • Typ:
  • (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

Bestätigt, dass haystack needle enthält. Kann verwendet werden, um das Vorhandensein eines Wertes in einem Array oder einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen. Es wird eine tiefe Gleichheitsprüfung (deep equality) durchgeführt.

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 ​

  • Typ:
    • (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

Bestätigt, dass haystack needle nicht enthält. Kann verwendet werden, um das Fehlen eines Wertes in einem Array oder einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen. Es wird eine tiefe Gleichheitsprüfung (deep equality) durchgeführt.

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 ​

  • Typ: (haystack: any, needle: any, message?: string) => void

Bestätigt, dass haystack needle enthält. Kann verwendet werden, um das Vorhandensein einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen. Ermöglicht die Verwendung der Punkt- und Klammernotation zum Referenzieren verschachtelter Eigenschaften. ‘[]’ und ‘.’ in Eigenschaftsnamen können mit doppelten Backslashes (\\) maskiert werden.

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 ​

  • Typ: (haystack: any, needle: any, message?: string) => void

Bestätigt, dass haystack needle nicht enthält. Kann verwendet werden, um das Fehlen einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen. Ermöglicht die Verwendung der Punkt- und Klammernotation zum Referenzieren verschachtelter Eigenschaften. ‘[]’ und ‘.’ in Eigenschaftsnamen können mit doppelten Backslashes (\\) maskiert werden.

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

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

deepNestedInclude ​

  • Typ: (haystack: any, needle: any, message?: string) => void

Bestätigt, dass haystack needle enthält. Kann verwendet werden, um das Vorhandensein einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen, wobei eine tiefe Gleichheitsprüfung (deep equality) durchgeführt wird. Ermöglicht die Verwendung der Punkt- und Klammernotation zum Referenzieren verschachtelter Eigenschaften. ‘[]’ und ‘.’ in Eigenschaftsnamen können mit doppelten Backslashes (\\) maskiert werden.

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 ​

  • Typ: (haystack: any, needle: any, message?: string) => void

Bestätigt, dass haystack needle nicht enthält. Kann verwendet werden, um das Fehlen einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen, wobei eine tiefe Gleichheitsprüfung (deep equality) durchgeführt wird. Ermöglicht die Verwendung der Punkt- und Klammernotation zum Referenzieren verschachtelter Eigenschaften. ‘[]’ und ‘.’ in Eigenschaftsnamen können mit doppelten Backslashes (\\) maskiert werden.

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 ​

  • Typ: (haystack: any, needle: any, message?: string) => void

Bestätigt, dass haystack needle enthält. Kann verwendet werden, um das Vorhandensein einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen, wobei vererbte Eigenschaften ignoriert werden.

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

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

notOwnInclude ​

  • Typ: (haystack: any, needle: any, message?: string) => void

Bestätigt, dass haystack needle nicht enthält. Kann verwendet werden, um das Fehlen einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen, wobei vererbte Eigenschaften ignoriert werden.

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 ​

  • Typ: (haystack: any, needle: any, message?: string) => void

Bestätigt, dass haystack die needle tiefgehend enthält. Dies kann verwendet werden, um zu überprüfen, ob ein Objekt bestimmte Eigenschaften besitzt, wobei geerbte Eigenschaften ignoriert und eine tiefe Gleichheitsprüfung durchgeführt wird.

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

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

notDeepOwnInclude ​

  • Typ: (haystack: any, needle: any, message?: string) => void

Bestätigt, dass haystack die needle nicht tiefgehend enthält. Dies kann verwendet werden, um das Fehlen einer Teilmenge von Eigenschaften in einem Objekt zu überprüfen, wobei geerbte Eigenschaften ignoriert und eine tiefe Gleichheitsprüfung durchgeführt wird.

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

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

match ​

  • Typ: (value: string, regexp: RegExp, message?: string) => void

Bestätigt, dass value mit dem regulären Ausdruck regexp übereinstimmt.

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

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

notMatch ​

  • Typ: (value: string, regexp: RegExp, message?: string) => void

Bestätigt, dass value nicht mit dem regulären Ausdruck regexp übereinstimmt.

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

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

property ​

  • Typ: <T>(object: T, property: string, message?: string) => void

Bestätigt, dass object eine Eigenschaft namens property besitzt (direkt oder geerbt).

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

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

notProperty ​

  • Typ: <T>(object: T, property: string, message?: string) => void

Bestätigt, dass object keine Eigenschaft namens property besitzt (weder direkt noch geerbt).

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

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

propertyVal ​

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

Bestätigt, dass object eine Eigenschaft namens property mit dem Wert value besitzt (direkt oder geerbt). Verwendet eine strikte Gleichheitsprüfung (===).

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

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

notPropertyVal ​

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

Bestätigt, dass object keine Eigenschaft namens property mit dem Wert value besitzt (weder direkt noch geerbt). Verwendet eine strikte Gleichheitsprüfung (===).

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 ​

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

Bestätigt, dass object eine Eigenschaft namens property mit dem Wert value besitzt (direkt oder geerbt). Verwendet eine tiefe Gleichheitsprüfung.

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

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

notDeepPropertyVal ​

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

Bestätigt, dass object keine Eigenschaft namens property mit dem Wert value besitzt (weder direkt noch geerbt). Verwendet eine tiefe Gleichheitsprüfung.

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

test('assert.deepPropertyVal', () => {
  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 ​

  • Typ: <T>(object: T, property: string, message?: string) => void

Bestätigt, dass object eine Eigenschaft namens property besitzt (direkt oder geerbt), wobei die Punkt- und Klammernotation für verschachtelte Referenzen verwendet werden kann.

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

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

notNestedProperty ​

  • Typ: <T>(object: T, property: string, message?: string) => void

Bestätigt, dass object keine Eigenschaft namens property besitzt (weder direkt noch geerbt), wobei die Punkt- und Klammernotation für verschachtelte Referenzen verwendet werden kann.

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

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

nestedPropertyVal ​

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

Bestätigt, dass object eine Eigenschaft namens property mit dem Wert value besitzt. property kann die Punkt- und Klammernotation für verschachtelte Referenzen verwenden. Verwendet eine strikte Gleichheitsprüfung (===).

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

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

notNestedPropertyVal ​

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

Bestätigt, dass object keine Eigenschaft namens property mit dem Wert value besitzt. property kann die Punkt- und Klammernotation für verschachtelte Referenzen verwenden. Verwendet eine strikte Gleichheitsprüfung (===).

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 ​

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

Bestätigt, dass object eine Eigenschaft namens property mit dem Wert value besitzt. property kann die Punkt- und Klammernotation für verschachtelte Referenzen verwenden. Verwendet eine tiefe Gleichheitsprüfung.

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 ​

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

Bestätigt, dass object keine Eigenschaft namens property mit dem Wert value besitzt. property kann die Punkt- und Klammernotation für verschachtelte Referenzen verwenden. Verwendet eine tiefe Gleichheitsprüfung.

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 ​

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

Bestätigt, dass object eine Länge (length) oder Größe (size) mit dem erwarteten Wert hat.

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 ​

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

Bestätigt, dass object mindestens einen der angegebenen keys besitzt. Anstelle eines Arrays von Schlüsseln kann auch ein einzelnes Objekt angegeben werden, dessen Eigenschaften als die erwarteten Schlüssel interpretiert werden.

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 ​

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

Bestätigt, dass object alle angegebenen keys besitzt. Anstelle eines Arrays von Schlüsseln kann auch ein einzelnes Objekt angegeben werden, dessen Eigenschaften als die erwarteten Schlüssel interpretiert werden.

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 ​

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

Bestätigt, dass object alle angegebenen keys besitzt, aber möglicherweise zusätzliche Schlüssel enthält. Anstelle eines Arrays von Schlüsseln kann auch ein einzelnes Objekt angegeben werden, dessen Eigenschaften als die erwarteten Schlüssel interpretiert werden.

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

Prüft, ob das object keine der angegebenen keys enthält. Anstelle eines Arrays von Schlüsseln kann auch ein einzelnes Objekt übergeben werden, dessen Schlüssel dann als die zu prüfenden Schlüssel verwendet werden.

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

Prüft, ob das object mindestens einen der angegebenen keys nicht enthält. Anstelle eines Arrays von Schlüsseln kann auch ein einzelnes Objekt übergeben werden, dessen Schlüssel dann als die zu prüfenden Schlüssel verwendet werden.

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

Prüft, ob das object mindestens einen der angegebenen keys besitzt. Da Set und Map Objekte als Schlüssel verwenden können, kann diese Überprüfung für einen Deep Comparison verwendet werden. Anstelle eines Arrays von Schlüsseln kann auch ein einzelnes Objekt übergeben werden, dessen Schlüssel dann als die zu prüfenden Schlüssel verwendet werden.

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

Prüft, ob das object alle angegebenen keys besitzt. Da Set und Map Objekte als Schlüssel verwenden können, kann diese Überprüfung für einen Deep Comparison verwendet werden. Anstelle eines Arrays von Schlüsseln kann auch ein einzelnes Objekt übergeben werden, dessen Schlüssel dann als die zu prüfenden Schlüssel verwendet werden.

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

Prüft, ob das object alle angegebenen keys enthält. Da Set und Map Objekte als Schlüssel verwenden können, kann diese Überprüfung für einen Deep Comparison verwendet werden. Anstelle eines Arrays von Schlüsseln kann auch ein einzelnes Objekt übergeben werden, dessen Schlüssel dann als die zu prüfenden Schlüssel verwendet werden.

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

Prüft, ob das object keinen der angegebenen keys besitzt. Da Set und Map Objekte als Schlüssel verwenden können, kann diese Überprüfung für einen Deep Comparison verwendet werden. Anstelle eines Arrays von Schlüsseln kann auch ein einzelnes Objekt übergeben werden, dessen Schlüssel dann als die zu prüfenden Schlüssel verwendet werden.

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

Prüft, ob das object nicht alle der angegebenen keys besitzt. Das bedeutet, dass mindestens einer der angegebenen Schlüssel nicht vorhanden sein darf. Da Set und Map Objekte als Schlüssel verwenden können, kann diese Überprüfung für einen Deep Comparison verwendet werden. Anstelle eines Arrays von Schlüsseln kann auch ein einzelnes Objekt übergeben werden, dessen Schlüssel dann als die zu prüfenden Schlüssel verwendet werden.

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

Wenn errorLike ein Error-Konstruktor ist, wird geprüft, dass fn einen Fehler auslöst, der eine Instanz von errorLike ist. Wenn errorLike eine Error-Instanz ist, wird geprüft, dass der ausgelöste Fehler die gleiche Instanz wie errorLike ist. Wenn errMsgMatcher angegeben ist, wird zusätzlich geprüft, dass der ausgelöste Fehler eine Meldung enthält, die mit errMsgMatcher übereinstimmt.

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

test('assert.throws', () => {
  assert.throws(fn, 'Error thrown must have this msg'); // Der ausgelöste Fehler muss diese Meldung haben
  assert.throws(fn, /Error thrown must have a msg that matches this/); // Der ausgelöste Fehler muss eine Meldung haben, die dazu passt
  assert.throws(fn, ReferenceError);
  assert.throws(fn, errorInstance);
  assert.throws(
    fn,
    ReferenceError,
    'Error thrown must be a ReferenceError and have this msg' // Der ausgelöste Fehler muss ein ReferenceError sein und diese Meldung haben
  );
  assert.throws(
    fn,
    errorInstance,
    'Error thrown must be the same errorInstance and have this msg' // Der ausgelöste Fehler muss die gleiche errorInstance sein und diese Meldung haben
  );
  assert.throws(
    fn,
    ReferenceError,
    /Error thrown must be a ReferenceError and match this/ // Der ausgelöste Fehler muss ein ReferenceError sein und dazu passen
  );
  assert.throws(
    fn,
    errorInstance,
    /Error thrown must be the same errorInstance and match this/ // Der ausgelöste Fehler muss die gleiche errorInstance sein und dazu passen
  );
});

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

Wenn errorLike ein Error-Konstruktor ist, wird geprüft, dass fn keinen Fehler auslöst, der eine Instanz von errorLike ist. Wenn errorLike eine Error-Instanz ist, wird geprüft, dass der ausgelöste Fehler nicht die gleiche Instanz wie errorLike ist. Wenn errMsgMatcher angegeben ist, wird zusätzlich geprüft, dass der ausgelöste Fehler keine Meldung enthält, die mit errMsgMatcher übereinstimmt.

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

test('assert.doesNotThrow', () => {
  assert.doesNotThrow(fn, 'Any Error thrown must not have this message'); // Es darf kein Fehler mit dieser Meldung ausgelöst werden
  assert.doesNotThrow(fn, /Any Error thrown must not match this/); // Es darf kein Fehler ausgelöst werden, dessen Meldung dazu passt
  assert.doesNotThrow(fn, Error);
  assert.doesNotThrow(fn, errorInstance);
  assert.doesNotThrow(fn, Error, 'Error must not have this message'); // Es darf kein Fehler mit dieser Meldung ausgelöst werden
  assert.doesNotThrow(fn, errorInstance, 'Error must not have this message'); // Es darf kein Fehler mit dieser Meldung ausgelöst werden
  assert.doesNotThrow(fn, Error, /Error must not match this/); // Es darf kein Fehler ausgelöst werden, dessen Meldung dazu passt
  assert.doesNotThrow(fn, errorInstance, /Error must not match this/); // Es darf kein Fehler ausgelöst werden, dessen Meldung dazu passt
});

operator ​

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

Vergleicht val1 und val2 mithilfe des operator.

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

test('assert.operator', () => {
  assert.operator(1, '<', 2, 'everything is ok'); // Alles ist in Ordnung
});

closeTo ​

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

Prüft, ob actual innerhalb eines Bereichs von +/- delta gleich expected ist.

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

test('assert.closeTo', () => {
  assert.closeTo(1.5, 1, 0.5, 'numbers are close'); // Die Zahlen liegen nahe beieinander
});

sameMembers ​

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

Prüft, ob set1 und set2 die gleichen Elemente in beliebiger Reihenfolge enthalten. Verwendet eine strikte Gleichheitsprüfung (===).

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

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

notSameMembers ​

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

Prüft, ob set1 und set2 nicht die gleichen Elemente in beliebiger Reihenfolge enthalten. Verwendet eine strikte Gleichheitsprüfung (===).

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

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

sameDeepMembers ​

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

Prüft, ob set1 und set2 die gleichen Elemente in beliebiger Reihenfolge enthalten. Verwendet eine tiefe Gleichheitsprüfung.

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' // Gleiche Elemente (tiefer Vergleich)
  );
});

notSameDeepMembers ​

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

Prüft, ob set1 und set2 nicht die gleichen Elemente in beliebiger Reihenfolge enthalten. Verwendet eine tiefe Gleichheitsprüfung.

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

test('assert.sameDeepMembers', () => {
  assert.notSameDeepMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { c: 3 }],
    'not same deep members' // Nicht die gleichen Elemente (tiefer Vergleich)
  );
});

sameOrderedMembers ​

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

Prüft, ob set1 und set2 die gleichen Elemente in der gleichen Reihenfolge enthalten. Verwendet eine strikte Gleichheitsprüfung (===).

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

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

notSameOrderedMembers ​

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

Prüft, ob set1 und set2 nicht die gleichen Elemente in der gleichen Reihenfolge enthalten. Verwendet eine strikte Gleichheitsprüfung (===).

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

test('assert.notSameOrderedMembers', () => {
  assert.notSameOrderedMembers(
    [1, 2, 3],
    [2, 1, 3],
    'not same ordered members' // Nicht die gleichen geordneten Elemente
  );
});

sameDeepOrderedMembers ​

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

Prüft, ob set1 und set2 die gleichen Elemente in der gleichen Reihenfolge enthalten. Verwendet eine tiefe Gleichheitsprüfung.

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' // Gleiche tief geordnete Elemente
  );
});

notSameDeepOrderedMembers ​

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

Stellt sicher, dass set1 und set2 nicht die gleichen Elemente in derselben Reihenfolge enthalten. Es wird eine Deep-Equality-Prüfung (tiefer Vergleich) verwendet.

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' // Die Arrays enthalten nicht die gleichen tief geordneten Elemente.
  );
  assert.notSameDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { c: 3 }],
    'not same deep ordered members' // Die Arrays enthalten nicht die gleichen tief geordneten Elemente.
  );
});

includeMembers ​

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

Stellt sicher, dass subset in superset in beliebiger Reihenfolge enthalten ist. Es wird eine strikte Gleichheitsprüfung (===) verwendet. Duplikate in subset werden ignoriert.

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

test('assert.includeMembers', () => {
  assert.includeMembers([1, 2, 3], [2, 1, 2], 'include members'); // Das Superset enthält alle Elemente des Subsets.
});

notIncludeMembers ​

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

Stellt sicher, dass subset nicht vollständig in superset in beliebiger Reihenfolge enthalten ist. Es wird eine strikte Gleichheitsprüfung (===) verwendet. Duplikate in subset werden ignoriert.

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

test('assert.notIncludeMembers', () => {
  assert.notIncludeMembers([1, 2, 3], [5, 1], 'not include members'); // Das Superset enthält nicht alle Elemente des Subsets.
});

includeDeepMembers ​

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

Stellt sicher, dass subset in superset in beliebiger Reihenfolge enthalten ist. Es wird eine Deep-Equality-Prüfung (tiefer Vergleich) verwendet. Duplikate in subset werden ignoriert.

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' // Das Superset enthält alle tiefen Elemente des Subsets.
  );
});

notIncludeDeepMembers ​

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

Stellt sicher, dass subset nicht vollständig in superset in beliebiger Reihenfolge enthalten ist. Es wird eine Deep-Equality-Prüfung (tiefer Vergleich) verwendet. Duplikate in subset werden ignoriert.

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' // Das Superset enthält nicht alle tiefen Elemente des Subsets.
  );
});

includeOrderedMembers ​

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

Stellt sicher, dass subset in superset in der gleichen Reihenfolge enthalten ist, beginnend mit dem ersten Element in superset. Es wird eine strikte Gleichheitsprüfung (===) verwendet.

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

test('assert.includeOrderedMembers', () => {
  assert.includeOrderedMembers([1, 2, 3], [1, 2], 'include ordered members'); // Das Superset enthält die geordneten Elemente des Subsets.
});

notIncludeOrderedMembers ​

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

Stellt sicher, dass subset nicht in superset in der gleichen Reihenfolge enthalten ist, beginnend mit dem ersten Element in superset. Es wird eine strikte Gleichheitsprüfung (===) verwendet.

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

test('assert.notIncludeOrderedMembers', () => {
  assert.notIncludeOrderedMembers(
    [1, 2, 3],
    [2, 1],
    'not include ordered members' // Das Superset enthält die Elemente des Subsets nicht in der gleichen Reihenfolge.
  );
  assert.notIncludeOrderedMembers(
    [1, 2, 3],
    [2, 3],
    'not include ordered members' // Das Superset enthält die Elemente des Subsets nicht in der gleichen Reihenfolge, beginnend mit dem ersten Element.
  );
});

includeDeepOrderedMembers ​

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

Stellt sicher, dass subset in superset in der gleichen Reihenfolge enthalten ist, beginnend mit dem ersten Element in superset. Es wird eine Deep-Equality-Prüfung (tiefer Vergleich) verwendet.

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' // Das Superset enthält die tief geordneten Elemente des Subsets.
  );
});

notIncludeDeepOrderedMembers ​

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

Stellt sicher, dass subset nicht in superset in der gleichen Reihenfolge enthalten ist, beginnend mit dem ersten Element in superset. Es wird eine Deep-Equality-Prüfung (tiefer Vergleich) verwendet.

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' // Das Superset enthält die tief geordneten Elemente des Subsets nicht.
  );
  assert.notIncludeDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }],
    'not include deep ordered members' // Das Superset enthält die tief geordneten Elemente des Subsets nicht in der gleichen Reihenfolge.
  );
  assert.notIncludeDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { c: 3 }],
    'not include deep ordered members' // Das Superset enthält die tief geordneten Elemente des Subsets nicht in der gleichen Reihenfolge, beginnend mit dem ersten Element.
  );
});

oneOf ​

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

Stellt sicher, dass ein Wert inList (der kein Objekt oder Array sein darf) in dem Array list enthalten ist.

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

test('assert.oneOf', () => {
  assert.oneOf(1, [2, 1], 'Not found in list'); // Der Wert ist in der Liste enthalten.
});

changes ​

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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der Eigenschaft property des Objekts object verändert.

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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der Eigenschaft property des Objekts object um den Wert change verändert.

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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der Eigenschaft property des Objekts object nicht verändert.

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

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

changesButNotBy ​

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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der Eigenschaft property des Objekts object verändert, aber nicht um den Wert 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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der numerischen Eigenschaft property des Objekts object erhöht.

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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der numerischen Eigenschaft property des Objekts object um den Wert change erhöht.

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

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

doesNotIncrease ​

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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der numerischen Eigenschaft property des Objekts object nicht erhöht.

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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der numerischen Eigenschaft property des Objekts object erhöht, aber nicht um den Wert 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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der numerischen Eigenschaft property des Objekts object verringert.

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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der numerischen Eigenschaft property des Objekts object um den Wert change verringert.

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

Stellt sicher, dass die Ausführung der Funktion modifier den Wert der numerischen Eigenschaft property des Objekts object nicht verringert.

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

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

doesNotDecreaseBy ​

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

Stellt sicher, dass die Ausführung von modifier den numerischen Wert der property des object oder den Rückgabewert von modifier nicht um den Wert change verringert.

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 ​

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

Stellt sicher, dass die Ausführung von modifier den numerischen Wert der property des object oder den Rückgabewert von modifier zwar verringert, aber nicht um den Wert 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 ​

  • Typ: <T>(object: T, message?: string) => void

Überprüft, ob object ein Falschwert ist. Wenn object ein Wahrheitswert ist (truthy), wird ein Fehler ausgelöst. Dies ermöglicht die Verwendung von Chai als direkten Ersatz für die Assert-Klasse von Node.

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

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

isExtensible ​

  • Typ: <T>(object: T, message?: string) => void
  • Alias: extensible

Bestätigt, dass object erweiterbar ist (ihm können neue Eigenschaften hinzugefügt werden).

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

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

isNotExtensible ​

  • Typ: <T>(object: T, message?: string) => void
  • Alias: notExtensible

Bestätigt, dass object nicht erweiterbar ist (ihm können keine neuen Eigenschaften hinzugefügt werden).

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 ​

  • Typ: <T>(object: T, message?: string) => void
  • Alias: sealed

Bestätigt, dass object versiegelt ist (ihm können keine neuen Eigenschaften hinzugefügt und vorhandene Eigenschaften nicht entfernt werden können).

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

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

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

isNotSealed ​

  • Typ: <T>(object: T, message?: string) => void
  • Alias: notSealed

Bestätigt, dass object nicht versiegelt ist (ihm können neue Eigenschaften hinzugefügt und vorhandene Eigenschaften entfernt werden können).

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

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

isFrozen ​

  • Typ: <T>(object: T, message?: string) => void
  • Alias: frozen

Bestätigt, dass das object eingefroren ist (ihm können keine neuen Eigenschaften hinzugefügt und vorhandene Eigenschaften nicht verändert werden können).

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

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

isNotFrozen ​

  • Typ: <T>(object: T, message?: string) => void
  • Alias: notFrozen

Bestätigt, dass object nicht eingefroren ist (ihm können neue Eigenschaften hinzugefügt und vorhandene Eigenschaften verändert werden können).

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

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

isEmpty ​

  • Typ: <T>(target: T, message?: string) => void
  • Alias: empty

Überprüft, ob target keine Werte enthält. Für Arrays und Strings wird die length-Eigenschaft überprüft. Für Map- und Set-Instanzen wird die size-Eigenschaft überprüft. Für Objekte, die keine Funktionen sind, wird die Anzahl der eigenen, aufzählbaren String-Schlüssel überprüft.

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

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

isNotEmpty ​

  • Typ: <T>(object: T, message?: string) => void
  • Alias: notEmpty

Überprüft, ob target Werte enthält. Für Arrays und Strings wird die length-Eigenschaft überprüft. Für Map- und Set-Instanzen wird die size-Eigenschaft überprüft. Für Objekte, die keine Funktionen sind, wird die Anzahl der eigenen, aufzählbaren String-Schlüssel überprüft.

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
Vorherige SeiteexpectTypeOf
Nächste SeiteassertType

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2024 Mithril Contributors

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

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2024 Mithril Contributors