Skip to content
Vitest 1
Main Navigation GuideAPIConfigurationAvancé
1.6.1
0.34.6

Français

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

Français

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

Apparence

Sidebar Navigation

Guide

Pourquoi Vitest

Premiers pas

Fonctionnalités

Espace de travail

Interface de ligne de commande

Filtrage des tests

Reporters

Couverture

Instantané (Snapshot)

Simulations

Tests de Type

Interface utilisateur de Vitest

Mode Navigateur

Tests intégrés au code source

Contexte de Test

Environnement de test

Extension des vérificateurs (Matchers)

Intégrations pour IDE

Débogage

Comparaison avec d'autres outils de test

Guide de migration

Erreurs courantes

Améliorer les performances

API

Référence de l'API de Test

Fonctions Mock

Vi

expect

expectTypeOf

assert

assertType

Configuration

Configuration du fichier Vitest

Configuration de Vitest

Sur cette page

assert ​

Vitest réexporte la méthode assert de chai afin de vérifier les invariants.

assert ​

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

Vérifie que l'expression donnée est truthy (s'évalue à vrai) ; sinon, l'assertion échoue.

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

test('assert', () => {
  assert('foo' !== 'bar', 'foo ne doit pas être égal à bar');
});

fail ​

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

Force l'échec d'une assertion.

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

test('assert.fail', () => {
  assert.fail("message d'erreur en cas d'échec de l'assertion");
  assert.fail('foo', 'bar', "foo n'est pas bar", '===');
});

isOk ​

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

Vérifie que la value donnée est truthy (s'évalue à vrai).

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

test('assert.isOk', () => {
  assert.isOk('foo', 'tout truthy est ok');
  assert.isOk(false, "cette assertion échouera car false n'est pas truthy");
});

isNotOk ​

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

Vérifie que la value donnée est falsy (s'évalue à faux).

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

test('assert.isNotOk', () => {
  assert.isNotOk('foo', "ceci échouera, tout truthy n'est pas ok");
  assert.isNotOk(false, 'ceci passera car false est falsy');
});

equal ​

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

Vérifie l'égalité non stricte (==) entre actual et expected.

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

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

notEqual ​

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

Vérifie l'inégalité non stricte (!=) entre actual et expected.

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

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

strictEqual ​

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

Vérifie l'égalité stricte (===) entre actual et expected.

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

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

deepEqual ​

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

Vérifie que actual est profondément égal à expected.

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

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

notDeepEqual ​

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

Vérifie que actual n'est pas profondément égal à expected.

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

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

isAbove ​

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

Vérifie que valueToCheck est strictement supérieur (>) à valueToBeAbove.

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

test('assert.isAbove', () => {
  assert.isAbove(5, 2, '5 est strictement supérieur à 2');
});

isAtLeast ​

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

Vérifie que valueToCheck est supérieur ou égal (>=) à valueToBeAtLeast.

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

test('assert.isAtLeast', () => {
  assert.isAtLeast(5, 2, '5 est supérieur ou égal à 2');
  assert.isAtLeast(3, 3, '3 est supérieur ou égal à 3');
});

isBelow ​

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

Vérifie que valueToCheck est strictement inférieur (<) à valueToBeBelow.

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

test('assert.isBelow', () => {
  assert.isBelow(3, 6, '3 est strictement inférieur à 6');
});

isAtMost ​

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

Vérifie que valueToCheck est inférieur ou égal (<=) à valueToBeAtMost.

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

test('assert.isAtMost', () => {
  assert.isAtMost(3, 6, '3 est inférieur ou égal à 6');
  assert.isAtMost(4, 4, '4 est inférieur ou égal à 4');
});

isTrue ​

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

Vérifie que value est true (vrai).

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

const testPassed = true;

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

isNotTrue ​

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

Vérifie que value n'est pas true (vrai).

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

const testPassed = 'ok';

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

isFalse ​

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

Vérifie que value est false (faux).

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

const testPassed = false;

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

isNotFalse ​

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

Vérifie que value n'est pas false (faux).

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

const testPassed = 'no';

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

isNull ​

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

Vérifie que value est null.

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

const error = null;

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

isNotNull ​

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

Vérifie que value n'est pas null.

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

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

test('assert.isNotNull', () => {
  assert.isNotNull(error, "error n'est pas null mais un objet");
});

isNaN ​

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

Vérifie que value est NaN (Not a Number - Pas un Nombre).

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

const calculation = 1 * 'viitest';

test('assert.isNaN', () => {
  assert.isNaN(calculation, '1 * "vitest" est NaN');
});

isNotNaN ​

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

Vérifie que value n'est pas NaN (Not a Number - Pas un Nombre).

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

const calculation = 1 * 2;

test('assert.isNotNaN', () => {
  assert.isNotNaN(calculation, "1 * 2 n'est pas NaN mais 2");
});

exists ​

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

Vérifie que value n'est ni null ni undefined.

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

const name = 'foo';

test('assert.exists', () => {
  assert.exists(name, "foo n'est ni null ni undefined");
});

notExists ​

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

Vérifie que value est soit null, soit undefined.

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

const foo = null;
const bar = undefined;

test('assert.notExists', () => {
  assert.notExists(foo, "foo est null donc n'existe pas");
  assert.notExists(bar, "bar est undefined donc n'existe pas");
});

isUndefined ​

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

Vérifie que value est undefined.

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

const name = undefined;

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

isDefined ​

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

Vérifie que value n'est pas undefined.

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

const name = 'foo';

test('assert.isDefined', () => {
  assert.isDefined(name, "name n'est pas undefined");
});

isFunction ​

  • Type: <T>(value: T, message?: string) => void
  • Alias: isCallable Vérifie que value est une fonction.
ts
import { assert, test } from 'vitest';

function name() {
  return 'foo';
}

test('assert.isFunction', () => {
  assert.isFunction(name, 'name est une fonction');
});

isNotFunction ​

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

Vérifie que value n'est pas une fonction.

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

const name = 'foo';

test('assert.isNotFunction', () => {
  assert.isNotFunction(
    name,
    "name n'est pas une fonction, mais une chaîne de caractères"
  );
});

isObject ​

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

Vérifie que value est un objet de type Object (tel que déterminé par Object.prototype.toString). L'assertion ne correspond pas aux objets sous-classés.

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

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

test('assert.isObject', () => {
  assert.isObject(someThing, 'someThing est un objet');
});

isNotObject ​

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

Vérifie que value n'est pas un objet de type Object (tel que déterminé par Object.prototype.toString). Cette assertion ne s'applique pas aux objets héritant de Object.

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

const someThing = 'redCircle';

test('assert.isNotObject', () => {
  assert.isNotObject(
    someThing,
    "someThing n'est pas un objet, mais une chaîne de caractères"
  );
});

isArray ​

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

Vérifie que value est un tableau.

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

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

test('assert.isArray', () => {
  assert.isArray(color, 'color est un tableau');
});

isNotArray ​

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

Vérifie que value n'est pas un tableau.

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

const color = 'red';

test('assert.isNotArray', () => {
  assert.isNotArray(
    color,
    "color n'est pas un tableau, mais une chaîne de caractères"
  );
});

isString ​

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

Vérifie que value est une chaîne de caractères.

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

const color = 'red';

test('assert.isString', () => {
  assert.isString(color, 'color est une chaîne');
});

isNotString ​

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

Vérifie que value n'est pas une chaîne de caractères.

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

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

test('assert.isNotString', () => {
  assert.isNotString(color, "color n'est pas une chaîne, mais un tableau");
});

isNumber ​

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

Vérifie que value est un nombre.

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

const colors = 3;

test('assert.isNumber', () => {
  assert.isNumber(colors, 'colors est un nombre');
});

isNotNumber ​

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

Vérifie que value n'est pas un nombre.

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

const colors = '3 colors';

test('assert.isNotNumber', () => {
  assert.isNotNumber(
    colors,
    "colors n'est pas un nombre, mais une chaîne de caractères"
  );
});

isFinite ​

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

Vérifie que value est un nombre fini (c'est-à-dire, ni NaN, ni Infinity).

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

const colors = 3;

test('assert.isFinite', () => {
  assert.isFinite(colors, 'colors est un nombre, ni NaN, ni Infinity');
});

isBoolean ​

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

Vérifie que value est un booléen.

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

const isReady = true;

test('assert.isBoolean', () => {
  assert.isBoolean(isReady, 'isReady est un booléen');
});

isNotBoolean ​

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

Vérifie que value n'est pas un booléen.

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

const isReady = 'sure';

test('assert.isNotBoolean', () => {
  assert.isNotBoolean(
    isReady,
    "isReady n'est pas un booléen, mais une chaîne de caractères"
  );
});

typeOf ​

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

Vérifie que le type de value correspond à name, tel que déterminé par Object.prototype.toString.

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

test('assert.typeOf', () => {
  assert.typeOf({ color: 'red' }, 'object', 'nous avons un objet');
  assert.typeOf(['red', 'green'], 'array', 'nous avons un tableau');
  assert.typeOf('red', 'string', 'nous avons une chaîne');
  assert.typeOf(/red/, 'regexp', 'nous avons une expression régulière');
  assert.typeOf(null, 'null', 'nous avons un null');
  assert.typeOf(undefined, 'undefined', 'nous avons un undefined');
});

notTypeOf ​

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

Vérifie que le type de value ne correspond pas à name, tel que déterminé par Object.prototype.toString.

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

test('assert.notTypeOf', () => {
  assert.notTypeOf('red', 'number', '"red" n’est pas un nombre.');
});

instanceOf ​

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

Vérifie que value est une instance de 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 est une instance de Person');
  assert.instanceOf(coffee, Tea, 'coffee est une instance de Tea');
});

notInstanceOf ​

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

Vérifie que value n'est pas une instance de 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, Tea, 'foo n’est pas une instance de Tea');
});

include ​

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

Peut être utilisé pour vérifier l'inclusion d'une valeur dans un tableau, d'une sous-chaîne dans une chaîne de caractères ou d'un sous-ensemble de propriétés dans un objet.

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

test('assert.include', () => {
  assert.include([1, 2, 3], 2, 'le tableau contient cette valeur');
  assert.include(
    'foobar',
    'foo',
    'la chaîne de caractères contient la sous-chaîne'
  );
  assert.include(
    { foo: 'bar', hello: 'universe' },
    { foo: 'bar' },
    'l’objet contient la propriété'
  );
});

notInclude ​

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

Peut être utilisé pour vérifier l'absence d'une valeur dans un tableau, d'une sous-chaîne dans une chaîne de caractères ou d'un sous-ensemble de propriétés dans un objet.

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

test('assert.notInclude', () => {
  assert.notInclude([1, 2, 3], 4, 'le tableau ne contient pas le nombre 4');
  assert.notInclude('foobar', 'baz', 'foobar ne contient pas baz');
  assert.notInclude(
    { foo: 'bar', hello: 'universe' },
    { foo: 'baz' },
    'l’objet ne contient pas la propriété'
  );
});

deepInclude ​

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

Vérifie que haystack inclut needle en utilisant une comparaison profonde (deep equality). Peut être utilisé pour vérifier l'inclusion d'une valeur dans un tableau ou d'un sous-ensemble de propriétés dans un objet.

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 ​

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

Vérifie que haystack n'inclut pas needle en utilisant une comparaison profonde (deep equality). Peut être utilisé pour vérifier l'absence d'une valeur dans un tableau ou d'un sous-ensemble de propriétés dans un objet.

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 ​

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

Vérifie que haystack inclut needle. Peut être utilisé pour vérifier l'inclusion d'un sous-ensemble de propriétés dans un objet. Permet l'utilisation de la notation point et crochet pour référencer les propriétés imbriquées. Les caractères '[]' et '.' dans les noms de propriétés peuvent être échappés à l'aide de doubles antislashs.

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 ​

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

Vérifie que haystack n'inclut pas needle. Peut être utilisé pour vérifier l'absence d'un sous-ensemble de propriétés dans un objet. Permet l'utilisation de la notation point et crochet pour référencer les propriétés imbriquées. Les caractères '[]' et '.' dans les noms de propriétés peuvent être échappés à l'aide de doubles antislashs.

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 ​

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

Vérifie que haystack inclut needle. Peut être utilisé pour vérifier l'inclusion d'un sous-ensemble de propriétés dans un objet en utilisant une comparaison profonde (deep equality). Permet l'utilisation de la notation point et crochet pour référencer les propriétés imbriquées. Les caractères '[]' et '.' dans les noms de propriétés peuvent être échappés à l'aide de doubles antislashs.

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 ​

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

Vérifie que haystack n'inclut pas needle. Peut être utilisé pour vérifier l'absence d'un sous-ensemble de propriétés dans un objet en utilisant une comparaison profonde (deep equality). Permet l'utilisation de la notation point et crochet pour référencer les propriétés imbriquées. Les caractères '[]' et '.' dans les noms de propriétés peuvent être échappés à l'aide de doubles antislashs.

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 ​

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

Vérifie que haystack inclut needle. Peut être utilisé pour vérifier l'inclusion d'un sous-ensemble de propriétés dans un objet, en ignorant les propriétés héritées.

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

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

notOwnInclude ​

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

Vérifie que haystack n'inclut pas needle. Peut être utilisé pour vérifier l'absence d'un sous-ensemble de propriétés dans un objet, en ignorant les propriétés héritées.

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 ​

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

Affirme que haystack inclut needle, en effectuant une comparaison profonde et en ignorant les propriétés héritées. Utile pour vérifier la présence d'un sous-ensemble de propriétés dans un objet.

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

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

notDeepOwnInclude ​

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

Affirme que haystack n'inclut pas needle, en effectuant une comparaison profonde et en ignorant les propriétés héritées. Utile pour vérifier l'absence d'un sous-ensemble de propriétés dans un objet.

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

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

match ​

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

Affirme que la chaîne value correspond à l'expression régulière regexp.

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

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

notMatch ​

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

Affirme que la chaîne value ne correspond pas à l'expression régulière regexp.

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

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

property ​

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

Affirme que object possède une propriété (directe ou héritée) nommée property.

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

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

notProperty ​

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

Affirme que object ne possède pas de propriété (directe ou héritée) nommée property.

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

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

propertyVal ​

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

Affirme que object possède une propriété (directe ou héritée) nommée property dont la valeur est strictement égale (===) à value.

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

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

notPropertyVal ​

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

Affirme que object ne possède pas de propriété (directe ou héritée) nommée property dont la valeur est strictement égale (===) à 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 ​

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

Affirme que object possède une propriété (directe ou héritée) nommée property dont la valeur est profondément égale à value.

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

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

notDeepPropertyVal ​

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

Affirme que object ne possède pas de propriété (directe ou héritée) nommée property dont la valeur est profondément égale à value.

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 ​

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

Affirme que object possède une propriété (directe ou héritée) nommée property, où property peut être une chaîne utilisant la notation pointée (par exemple, tea.green) ou entre crochets pour une référence imbriquée.

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

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

notNestedProperty ​

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

Affirme que object ne possède pas de propriété (directe ou héritée) nommée property, où property peut être une chaîne utilisant la notation pointée (par exemple, tea.green) ou entre crochets pour une référence imbriquée.

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

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

nestedPropertyVal ​

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

Affirme que object possède une propriété nommée property dont la valeur est strictement égale (===) à value. property peut utiliser la notation pointée (par exemple, tea.green) ou entre crochets pour une référence imbriquée.

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

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

notNestedPropertyVal ​

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

Affirme que object ne possède pas de propriété nommée property dont la valeur est strictement égale (===) à value. property peut utiliser la notation pointée (par exemple, tea.green) ou entre crochets pour une référence imbriquée.

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 ​

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

Affirme que object possède une propriété nommée property dont la valeur est profondément égale à value. property peut utiliser la notation pointée (par exemple, tea.green) ou entre crochets pour une référence imbriquée.

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 ​

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

Affirme que object ne possède pas de propriété nommée property dont la valeur est profondément égale à value. property peut utiliser la notation pointée (par exemple, tea.green) ou entre crochets pour une référence imbriquée.

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 ​

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

Affirme que object possède une propriété length ou size dont la valeur est égale à 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 ​

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

Affirme que object possède au moins une des clés spécifiées dans keys. keys peut être un tableau de clés ou un objet dont les clés seront utilisées comme ensemble de clés attendu.

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 ​

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

Affirme que object possède toutes les clés spécifiées dans keys et uniquement celles-ci. keys peut être un tableau de clés ou un objet dont les clés seront utilisées comme ensemble de clés attendu.

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 ​

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

Affirme que object possède toutes les clés spécifiées dans keys, mais peut également contenir d'autres clés. keys peut être un tableau de clés ou un objet dont les clés seront utilisées comme ensemble de clés attendu.

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

Vérifie que object ne contient aucune des clés spécifiées. Vous pouvez également fournir un objet unique au lieu d'un tableau de clés ; dans ce cas, ses clés seront utilisées comme ensemble de clés attendu.

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

Vérifie que object ne contient pas toutes les clés spécifiées. Autrement dit, elle vérifie qu'au moins une des clés fournies est absente de l'objet. Vous pouvez également fournir un objet unique au lieu d'un tableau de clés ; dans ce cas, ses clés seront utilisées comme ensemble de clés attendu.

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

Vérifie que object contient au moins une des clés spécifiées. Étant donné que les Set et les Map peuvent avoir des objets comme clés, vous pouvez utiliser cette assertion pour effectuer une comparaison en profondeur des clés. Vous pouvez également fournir un objet unique au lieu d'un tableau de clés ; dans ce cas, ses clés seront utilisées comme ensemble de clés attendu.

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

Vérifie que object contient toutes les clés spécifiées et uniquement celles-ci. Étant donné que les Set et les Map peuvent avoir des objets comme clés, vous pouvez utiliser cette assertion pour effectuer une comparaison en profondeur des clés. Vous pouvez également fournir un objet unique au lieu d'un tableau de clés ; dans ce cas, ses clés seront utilisées comme ensemble de clés attendu.

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

Vérifie que object contient toutes les clés spécifiées. Contrairement à hasAllDeepKeys, l'objet peut contenir d'autres clés en plus de celles spécifiées. Étant donné que les Set et les Map peuvent avoir des objets comme clés, vous pouvez utiliser cette assertion pour effectuer une comparaison en profondeur des clés. Vous pouvez également fournir un objet unique au lieu d'un tableau de clés ; dans ce cas, ses clés seront utilisées comme ensemble de clés attendu.

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

Vérifie que object ne contient aucune des clés spécifiées. Étant donné que les Set et les Map peuvent avoir des objets comme clés, vous pouvez utiliser cette assertion pour effectuer une comparaison en profondeur des clés. Vous pouvez également fournir un objet unique au lieu d'un tableau de clés ; dans ce cas, ses clés seront utilisées comme ensemble de clés attendu.

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

Vérifie que object ne contient pas toutes les clés spécifiées. Autrement dit, elle vérifie qu'au moins une des clés fournies est absente de l'objet. Étant donné que les Set et les Map peuvent avoir des objets comme clés, vous pouvez utiliser cette assertion pour effectuer une comparaison en profondeur des clés. Vous pouvez également fournir un objet unique au lieu d'un tableau de clés ; dans ce cas, ses clés seront utilisées comme ensemble de clés attendu.

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

Si errorLike est un constructeur d'erreur (ErrorConstructor), vérifie que fn lève une erreur qui est une instance de errorLike. Si errorLike est une instance d'erreur (Error), vérifie que l'erreur levée est la même instance que errorLike. Si errMsgMatcher est fourni, vérifie également que le message de l'erreur levée correspond à errMsgMatcher.

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

test('assert.throws', () => {
  assert.throws(fn, "Le message d'erreur doit correspondre à");
  assert.throws(fn, /Error thrown must have a msg that matches this/); // Le message d'erreur doit correspondre à ceci
  assert.throws(fn, ReferenceError);
  assert.throws(fn, errorInstance);
  assert.throws(fn, ReferenceError, "Le message d'erreur doit correspondre à");
  assert.throws(fn, errorInstance, "Le message d'erreur doit correspondre à");
  assert.throws(
    fn,
    ReferenceError,
    /Error thrown must be a ReferenceError and match this/ // L'erreur levée doit être une ReferenceError et correspondre à ceci
  );
  assert.throws(
    fn,
    errorInstance,
    /Error thrown must be the same errorInstance and match this/ // L'erreur levée doit être la même instance d'erreur et correspondre à ceci
  );
});

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

Si errorLike est un constructeur d'erreur (ErrorConstructor), vérifie que fn ne lève pas une erreur qui est une instance de errorLike. Si errorLike est une instance d'erreur (Error), vérifie que l'erreur levée n'est pas la même instance que errorLike. Si errMsgMatcher est fourni, vérifie également qu'aucune erreur levée ne contient un message correspondant à errMsgMatcher.

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

test('assert.doesNotThrow', () => {
  assert.doesNotThrow(fn, 'Aucune erreur levée ne doit contenir ce message');
  assert.doesNotThrow(fn, /Any Error thrown must not match this/); // Toute erreur levée ne doit pas correspondre à ceci
  assert.doesNotThrow(fn, Error);
  assert.doesNotThrow(fn, errorInstance);
  assert.doesNotThrow(fn, Error, 'Error must not have this message'); // L'erreur ne doit pas avoir ce message
  assert.doesNotThrow(fn, errorInstance, 'Error must not have this message'); // L'erreur ne doit pas avoir ce message
  assert.doesNotThrow(fn, Error, /Error must not match this/); // L'erreur ne doit pas correspondre à ceci
  assert.doesNotThrow(fn, errorInstance, /Error must not match this/); // L'erreur ne doit pas correspondre à ceci
});

operator ​

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

Compare val1 et val2 en utilisant l'operator spécifié.

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

test('assert.operator', () => {
  assert.operator(1, '<', 2, 'tout est correct');
});

closeTo ​

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

Vérifie que actual est égal à expected, à +/- delta près (marge d'erreur).

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

test('assert.closeTo', () => {
  assert.closeTo(1.5, 1, 0.5, 'les valeurs sont proches');
});

sameMembers ​

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

Vérifie que set1 et set2 contiennent les mêmes éléments, quel que soit leur ordre. Utilise une comparaison d'égalité stricte (===).

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

test('assert.sameMembers', () => {
  assert.sameMembers([1, 2, 3], [2, 1, 3], 'mêmes éléments');
});

notSameMembers ​

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

Vérifie que set1 et set2 ne contiennent pas les mêmes éléments, quel que soit leur ordre. Utilise une comparaison d'égalité stricte (===).

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

test('assert.sameMembers', () => {
  assert.notSameMembers([1, 2, 3], [5, 1, 3], 'éléments différents');
});

sameDeepMembers ​

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

Vérifie que set1 et set2 contiennent les mêmes éléments, quel que soit leur ordre. Utilise une comparaison d'égalité en profondeur.

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

test('assert.sameDeepMembers', () => {
  assert.sameDeepMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { c: 3 }],
    'membres identiques en comparaison approfondie'
  );
});

notSameDeepMembers ​

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

Vérifie que set1 et set2 ne contiennent pas les mêmes éléments, quel que soit leur ordre. Utilise une comparaison d'égalité en profondeur.

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

test('assert.notSameDeepMembers', () => {
  assert.notSameDeepMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { c: 3 }],
    'éléments différents (comparaison profonde)'
  );
});

sameOrderedMembers ​

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

Vérifie que set1 et set2 contiennent les mêmes éléments dans le même ordre. Utilise une comparaison d'égalité stricte (===).

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

test('assert.sameOrderedMembers', () => {
  assert.sameOrderedMembers([1, 2, 3], [1, 2, 3], 'mêmes éléments ordonnés');
});

notSameOrderedMembers ​

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

Vérifie que set1 et set2 ne contiennent pas les mêmes éléments dans le même ordre. Utilise une comparaison d'égalité stricte (===).

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

test('assert.notSameOrderedMembers', () => {
  assert.notSameOrderedMembers(
    [1, 2, 3],
    [2, 1, 3],
    'membres non identiques dans le même ordre'
  );
});

sameDeepOrderedMembers ​

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

Vérifie que set1 et set2 contiennent les mêmes éléments dans le même ordre. Utilise une comparaison d'égalité en profondeur.

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

test('assert.sameDeepOrderedMembers', () => {
  assert.sameDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    'mêmes éléments ordonnés (comparaison profonde)'
  );
});

notSameDeepOrderedMembers ​

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

Vérifie que set1 et set2 ne contiennent pas les mêmes éléments dans le même ordre, en utilisant une comparaison d'égalité profonde.

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

Vérifie que tous les éléments de subset sont présents dans superset, quel que soit l'ordre. Utilise une comparaison d'égalité stricte (===). Les doublons dans subset sont ignorés.

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

Vérifie qu'au moins un élément de subset n'est pas présent dans superset, quel que soit l'ordre. Utilise une comparaison d'égalité stricte (===). Les doublons dans subset sont ignorés.

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

Vérifie que tous les éléments de subset sont présents dans superset, quel que soit l'ordre. Utilise une comparaison d'égalité profonde. Les doublons dans subset sont ignorés.

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

Vérifie qu'au moins un élément de subset n'est pas présent dans superset, quel que soit l'ordre. Utilise une comparaison d'égalité profonde. Les doublons dans subset sont ignorés.

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

Vérifie que subset est une sous-séquence de superset, en respectant l'ordre des éléments et en commençant par le premier élément de superset. Utilise une comparaison d'égalité stricte (===).

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

Vérifie que subset n'est pas une sous-séquence de superset, en respectant l'ordre des éléments et en commençant par le premier élément de superset. Utilise une comparaison d'égalité stricte (===).

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

Vérifie que subset est une sous-séquence de superset, en respectant l'ordre des éléments et en commençant par le premier élément de superset. Utilise une comparaison d'égalité profonde.

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

Vérifie que subset n'est pas une sous-séquence de superset, en respectant l'ordre des éléments et en commençant par le premier élément de superset. Utilise une comparaison d'égalité profonde.

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

Vérifie que la valeur inList (qui ne doit pas être un objet ou un tableau) est présente dans le tableau list.

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

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

changes ​

  • Type: <T>(modificateur: Function, objet: T, propriété: string, message?: string) => void

Vérifie que l'exécution de la fonction modificateur modifie la valeur de la propriété de l'objet.

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>(modificateur: Function, objet: T, propriété: string, changement: number, message?: string) => void

Vérifie que l'exécution de la fonction modificateur modifie la valeur de la propriété de l'objet d'une valeur égale à changement.

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>(modificateur: Function, objet: T, propriété: string, message?: string) => void

Vérifie que l'exécution de la fonction modificateur ne modifie pas la valeur de la propriété de l'objet.

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>(modificateur: Function, objet: T, propriété: string, changement:number, message?: string) => void

Vérifie que l'exécution de la fonction modificateur modifie la valeur de la propriété de l'objet, mais pas d'une valeur égale à changement.

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>(modificateur: Function, objet: T, propriété: string, message?: string) => void

Vérifie que l'exécution de la fonction modificateur augmente la valeur numérique de la propriété de l'objet.

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>(modificateur: Function, objet: T, propriété: string, changement: number, message?: string) => void

Vérifie que l'exécution de la fonction modificateur augmente la valeur numérique de la propriété de l'objet d'une valeur égale à changement.

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>(modificateur: Function, objet: T, propriété: string, message?: string) => void

Vérifie que l'exécution de la fonction modificateur n'augmente pas la valeur numérique de la propriété de l'objet.

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>(modificateur: Function, objet: T, propriété: string, changement: number, message?: string) => void

Vérifie que l'exécution de la fonction modificateur augmente la valeur numérique de la propriété de l'objet, mais pas d'une valeur égale à changement.

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>(modificateur: Function, objet: T, propriété: string, message?: string) => void

Vérifie que l'exécution de la fonction modificateur diminue la valeur numérique de la propriété de l'objet.

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>(modificateur: Function, objet: T, propriété: string, changement: number, message?: string) => void

Vérifie que l'exécution de la fonction modificateur diminue la valeur numérique de la propriété de l'objet d'une valeur égale à changement.

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>(modificateur: Function, objet: T, propriété: string, message?: string) => void

Vérifie que l'exécution de la fonction modificateur ne diminue pas la valeur numérique de la propriété de l'objet.

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

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

doesNotDecreaseBy ​

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

Vérifie qu'un modifier ne diminue pas la valeur d'une property numérique d'un object, ou la valeur retournée par un modifier, d'un montant change spécifié.

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 ​

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

Vérifie qu'un modifier diminue la valeur d'une property numérique d'un object, ou la valeur retournée par un modifier, mais pas d'un montant change spécifié.

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 ​

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

Vérifie que object n'est pas une valeur "truthy" (évaluant à vrai), et lance une erreur si c'est le cas. Ceci a été ajouté pour permettre à chai d'être un remplacement immédiat de la classe assert de Node.

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

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

isExtensible ​

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

Vérifie que object est extensible (de nouvelles propriétés peuvent lui être ajoutées).

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

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

isNotExtensible ​

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

Vérifie que object n'est pas extensible (de nouvelles propriétés ne peuvent pas lui être ajoutées).

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 ​

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

Vérifie que object est scellé (de nouvelles propriétés ne peuvent pas lui être ajoutées et les propriétés existantes ne peuvent pas être supprimées).

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

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

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

isNotSealed ​

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

Vérifie que object n'est pas scellé (de nouvelles propriétés peuvent lui être ajoutées et les propriétés existantes peuvent être supprimées).

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

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

isFrozen ​

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

Vérifie que object est gelé (de nouvelles propriétés ne peuvent pas lui être ajoutées et les propriétés existantes ne peuvent pas être modifiées).

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

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

isNotFrozen ​

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

Vérifie que object n'est pas gelé (de nouvelles propriétés peuvent lui être ajoutées et les propriétés existantes peuvent être modifiées).

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

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

isEmpty ​

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

Vérifie que target ne contient aucune valeur. Pour les tableaux et les chaînes de caractères, elle vérifie la propriété length. Pour les instances Map et Set, elle vérifie la propriété size. Pour les objets non-fonction, elle compte le nombre de propriétés propres énumérables (clés de type chaîne de caractères).

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

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

isNotEmpty ​

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

Vérifie que target contient des valeurs. Pour les tableaux et les chaînes de caractères, elle vérifie la propriété length. Pour les instances Map et Set, elle vérifie la propriété size. Pour les objets non-fonction, elle compte le nombre de propriétés propres énumérables (clés de type chaîne de caractères).

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
Page précédenteexpectTypeOf
Page suivanteassertType

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors

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

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors