Skip to content
Vitest 3
Main Navigation Guide & APIConfigurationMode NavigateurAPI avancée
3.2.0
2.1.9
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

Introduction

Pourquoi Vitest

Démarrage

Fonctionnalités

Configuration de Vitest

API

Référence de l'API des Tests

Fonctions Mocks

vi

expect

expectTypeOf

assert

assertType

Guide

Interface en ligne de commande (CLI)

Filtrage des tests

Projets de Test

Rapporteurs

Couverture de code

Instantanés

Simulation

Parallélisme

Tests de type

Interface utilisateur de Vitest

Tests in-source

Contexte de test

Annotations de test

Environnement de Test

Étendre les Matchers

Intégrations IDE

Débogage

Erreurs courantes

Guide de migration

Migration vers Vitest 3.0

Migration depuis Jest

Performance

Analyse des performances des tests

Amélioration des performances

Mode Navigateur

API avancée

Comparaison avec d'autres exécuteurs de tests

Sur cette page

assert ​

Vitest réexporte la méthode assert de chai pour la vérification des invariants.

assert ​

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

Affirme que l'expression donnée est vraie, sinon l'assertion échouera.

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

Provoque un échec d'assertion.

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

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

isOk ​

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

Affirme que la value donnée est une valeur vraie (truthy).

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

test('assert.isOk', () => {
  assert.isOk('foo', 'toute valeur truthy est ok');
  assert.isOk(false, 'ceci échouera car false n\'est pas truthy');
});

isNotOk ​

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

Affirme que la value donnée est une valeur fausse (falsy).

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

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

equal ​

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

Affirme l'égalité non stricte (==) de 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

Affirme l'inégalité non stricte (!=) de actual et expected.

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

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

strictEqual ​

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

Affirme l'égalité stricte (===) de 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

Affirme 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

Affirme 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

Affirme 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

Affirme 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

Affirme 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

Affirme 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

Affirme que value est true.

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

const testPassed = true;

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

isNotTrue ​

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

Affirme que value n'est pas true.

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

const testPassed = 'ok';

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

isFalse ​

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

Affirme que value est false.

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

const testPassed = false;

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

isNotFalse ​

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

Affirme que value n'est pas false.

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

const testPassed = 'no';

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

isNull ​

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

Affirme que value est null.

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

const error = null;

test('assert.isNull', () => {
  assert.isNull(error, 'l\'erreur est nulle');
});

isNotNull ​

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

Affirme que value n'est pas null.

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

const error = { message: 'une erreur s\'est produite' };

test('assert.isNotNull', () => {
  assert.isNotNull(error, 'l\'erreur n\'est pas nulle mais un objet');
});

isNaN ​

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

Affirme que value est NaN (Not a Number).

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

const calculation = 1 * 'vitest';

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

isNotNaN ​

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

Affirme que value n'est pas NaN.

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

Affirme 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

Affirme 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

Affirme que value est undefined.

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

const name = undefined;

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

isDefined ​

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

Affirme que value n'est pas undefined.

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

const name = 'foo';

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

isFunction ​

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

function name() {
  return 'foo';
}

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

isNotFunction ​

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

Affirme que value n'est pas une fonction.

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

const name = 'foo';

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

isObject ​

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

Affirme que value est un objet de type Object (tel que révélé 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

Affirme que value n'est pas un objet de type Object (tel que révélé par Object.prototype.toString). L'assertion ne correspond pas aux objets sous-classés.

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

Affirme que value est un tableau.

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

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

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

isNotArray ​

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

Affirme que value n'est pas un tableau.

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

const color = 'red';

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

isString ​

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

Affirme que value est une chaîne de caractères.

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

const color = 'red';

test('assert.isString', () => {
  assert.isString(color, 'la couleur est une chaîne de caractères');
});

isNotString ​

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

Affirme 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, 'la couleur n\'est pas une chaîne de caractères mais un tableau');
});

isNumber ​

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

Affirme 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

Affirme 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

Affirme que value est un nombre fini (ni NaN, ni Infinity).

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

const colors = 3;

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

isBoolean ​

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

Affirme 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

Affirme 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

Affirme que le type de value est 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 de caractères');
  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

Affirme que le type de value n'est 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

Affirme 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

Affirme 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.notInstanceOf', () => {
  assert.notInstanceOf(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

Affirme que haystack inclut needle. Peut être utilisé pour affirmer l'inclusion d'une valeur dans un tableau, d'une sous-chaîne dans une chaîne, 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 la valeur');
  assert.include('foobar', 'foo', 'la chaîne 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

Affirme que haystack n'inclut pas needle. Peut être utilisé pour affirmer l'absence d'une valeur dans un tableau, d'une sous-chaîne dans une chaîne, 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 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

Affirme que haystack inclut needle. Peut être utilisé pour affirmer l'inclusion d'une valeur dans un tableau ou d'un sous-ensemble de propriétés dans un objet. L'égalité profonde est utilisée.

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

Affirme que haystack n'inclut pas needle. Peut être utilisé pour affirmer l'absence d'une valeur dans un tableau ou d'un sous-ensemble de propriétés dans un objet. L'égalité profonde est utilisée.

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

Affirme que haystack inclut needle. Peut être utilisé pour affirmer l'inclusion d'un sous-ensemble de propriétés dans un objet. Permet l'utilisation de la notation par points et crochets 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 en utilisant des doubles barres obliques inverses.

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

Affirme que haystack n'inclut pas needle. Peut être utilisé pour affirmer l'absence d'un sous-ensemble de propriétés dans un objet. Permet l'utilisation de la notation par points et crochets 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 en utilisant des doubles barres obliques inverses.

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 ​

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

Affirme que haystack inclut needle. Peut être utilisé pour affirmer l'inclusion d'un sous-ensemble de propriétés dans un objet tout en vérifiant l'égalité profonde. Permet l'utilisation de la notation par points et crochets 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 en utilisant des doubles barres obliques inverses.

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

Affirme que haystack n'inclut pas needle. Peut être utilisé pour affirmer l'absence d'un sous-ensemble de propriétés dans un objet tout en vérifiant l'égalité profonde. Permet l'utilisation de la notation par points et crochets 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 en utilisant des doubles barres obliques inverses.

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

Affirme que haystack inclut needle. Peut être utilisé pour affirmer l'inclusion d'un sous-ensemble de propriétés dans un objet tout 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

Affirme que haystack n'inclut pas needle. Peut être utilisé pour affirmer l'absence d'un sous-ensemble de propriétés dans un objet tout 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. Peut être utilisé pour affirmer l'inclusion d'un sous-ensemble de propriétés dans un objet tout en ignorant les propriétés héritées et en vérifiant l'égalité profonde.

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. Peut être utilisé pour affirmer l'absence d'un sous-ensemble de propriétés dans un objet tout en ignorant les propriétés héritées et en vérifiant l'égalité profonde.

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 value correspond à l'expression régulière regexp.

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

test('assert.match', () => {
  assert.match('foobar', /^foo/, 'l\'expression régulière correspond');
});

notMatch ​

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

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

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

test('assert.notMatch', () => {
  assert.notMatch('foobar', /^foo/, 'l\'expression régulière ne correspond pas');
});

property ​

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

Affirme que object a une propriété directe ou héritée nommée par 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 n'a pas de propriété directe ou héritée nommée par 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 a une propriété directe ou héritée nommée par property avec une valeur donnée par value. Utilise une vérification d'égalité stricte (===).

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

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

notPropertyVal ​

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

Affirme que object n'a pas de propriété directe ou héritée nommée par property avec une valeur donnée par value. Utilise une vérification d'égalité stricte (===).

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 a une propriété directe ou héritée nommée par property avec une valeur donnée par value. Utilise une vérification d'égalité profonde.

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 n'a pas de propriété directe ou héritée nommée par property avec une valeur donnée par value. Utilise une vérification d'égalité profonde.

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

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

nestedProperty ​

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

Affirme que object a une propriété directe ou héritée nommée par property, qui peut être une chaîne de caractères utilisant la notation par points et crochets pour une référence imbriquée.

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

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

notNestedProperty ​

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

Affirme que object n'a pas de propriété directe ou héritée nommée par property, qui peut être une chaîne de caractères utilisant la notation par points et crochets pour une référence imbriquée.

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

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

nestedPropertyVal ​

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

Affirme que object a une propriété nommée par property avec la valeur donnée par value. property peut utiliser la notation par points et crochets pour une référence imbriquée. Utilise une vérification d'égalité stricte (===).

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 n'a pas de propriété nommée par property avec la valeur donnée par value. property peut utiliser la notation par points et crochets pour une référence imbriquée. Utilise une vérification d'égalité stricte (===).

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 a une propriété nommée par property avec une valeur donnée par value. property peut utiliser la notation par points et crochets pour une référence imbriquée. Utilise une vérification d'égalité profonde.

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

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

notDeepNestedPropertyVal ​

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

Affirme que object n'a pas de propriété nommée par property avec la valeur donnée par value. property peut utiliser la notation par points et crochets pour une référence imbriquée. Utilise une vérification d'égalité profonde.

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 a une length ou size avec la valeur attendue.

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

test('assert.lengthOf', () => {
  assert.lengthOf([1, 2, 3], 3, 'le tableau a une longueur de 3');
  assert.lengthOf('foobar', 6, 'la chaîne a une longueur de 6');
  assert.lengthOf(new Set([1, 2, 3]), 3, 'l\'ensemble a une taille de 3');
  assert.lengthOf(
    new Map([
      ['a', 1],
      ['b', 2],
      ['c', 3],
    ]),
    3,
    'la carte a une taille de 3'
  );
});

hasAnyKeys ​

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

Affirme que object a au moins une des keys fournies. Vous pouvez également fournir un seul objet au lieu d'un tableau de clés, et ses 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 a toutes les keys fournies, et seulement celles-ci. Vous pouvez également fournir un seul objet au lieu d'un tableau de clés, et ses 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 a toutes les keys fournies, mais peut avoir des clés supplémentaires non listées. Vous pouvez également fournir un seul objet au lieu d'un tableau de clés, et ses 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

Affirme que object n'a aucune des keys fournies. Vous pouvez également fournir un seul objet au lieu d'un tableau de clés, et 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

Affirme que object n'a pas au moins une des keys fournies. Vous pouvez également fournir un seul objet au lieu d'un tableau de clés, et ses clés seront utilisées comme ensemble de clés attendu.

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

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

hasAnyDeepKeys ​

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

Affirme que object a au moins une des keys fournies. Étant donné que les ensembles (Set) et les cartes (Map) peuvent avoir des objets comme clés, vous pouvez utiliser cette assertion pour effectuer une comparaison profonde. Vous pouvez également fournir un seul objet au lieu d'un tableau de clés, et 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

Affirme que object a toutes les keys fournies, et seulement celles-ci. Étant donné que les ensembles (Set) et les cartes (Map) peuvent avoir des objets comme clés, vous pouvez utiliser cette assertion pour effectuer une comparaison profonde. Vous pouvez également fournir un seul objet au lieu d'un tableau de clés, et 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

Affirme que object contient toutes les keys fournies. Étant donné que les ensembles (Set) et les cartes (Map) peuvent avoir des objets comme clés, vous pouvez utiliser cette assertion pour effectuer une comparaison profonde. Vous pouvez également fournir un seul objet au lieu d'un tableau de clés, et 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

Affirme que object n'a aucune des keys fournies. Étant donné que les ensembles (Set) et les cartes (Map) peuvent avoir des objets comme clés, vous pouvez utiliser cette assertion pour effectuer une comparaison profonde. Vous pouvez également fournir un seul objet au lieu d'un tableau de clés, et 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

Affirme que object n'a pas au moins une des keys fournies. Étant donné que les ensembles (Set) et les cartes (Map) peuvent avoir des objets comme clés, vous pouvez utiliser cette assertion pour effectuer une comparaison profonde. Vous pouvez également fournir un seul objet au lieu d'un tableau de clés, et 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, affirme que fn lancera une erreur qui est une instance de errorLike. Si errorLike est une instance d'erreur, affirme que l'erreur lancée est la même instance que errorLike. Si errMsgMatcher est fourni, il affirme également que l'erreur lancée aura un message correspondant à errMsgMatcher.

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

test('assert.throws', () => {
  assert.throws(fn, 'L\'erreur lancée doit avoir ce message');
  assert.throws(fn, /L\'erreur lancée doit avoir un message qui correspond à ceci/);
  assert.throws(fn, ReferenceError);
  assert.throws(fn, errorInstance);
  assert.throws(
    fn,
    ReferenceError,
    'L\'erreur lancée doit être une ReferenceError et avoir ce message'
  );
  assert.throws(
    fn,
    errorInstance,
    'L\'erreur lancée doit être la même instance d\'erreur et avoir ce message'
  );
  assert.throws(
    fn,
    ReferenceError,
    /L\'erreur lancée doit être une ReferenceError et correspondre à ceci/
  );
  assert.throws(
    fn,
    errorInstance,
    /L\'erreur lancé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, affirme que fn ne lancera pas d'erreur qui est une instance de errorLike. Si errorLike est une instance d'erreur, affirme que l'erreur lancée n'est pas la même instance que errorLike. Si errMsgMatcher est fourni, il affirme également que l'erreur lancée n'aura pas de message correspondant à errMsgMatcher.

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

test('assert.doesNotThrow', () => {
  assert.doesNotThrow(fn, 'Toute erreur lancée ne doit pas avoir ce message');
  assert.doesNotThrow(fn, /Toute erreur lancée ne doit pas correspondre à ceci/);
  assert.doesNotThrow(fn, Error);
  assert.doesNotThrow(fn, errorInstance);
  assert.doesNotThrow(fn, Error, 'L\'erreur ne doit pas avoir ce message');
  assert.doesNotThrow(fn, errorInstance, 'L\'erreur ne doit pas avoir ce message');
  assert.doesNotThrow(fn, Error, /L\'erreur ne doit pas correspondre à ceci/);
  assert.doesNotThrow(fn, errorInstance, /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.

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

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

closeTo ​

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

Affirme que actual est égal à expected, à une plage de +/- delta près.

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

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

sameMembers ​

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

Affirme que set1 et set2 ont les mêmes membres dans n'importe quel ordre. Utilise une vérification d'égalité stricte (===).

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

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

notSameMembers ​

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

Affirme que set1 et set2 n'ont pas les mêmes membres dans n'importe quel ordre. Utilise une vérification d'égalité stricte (===).

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

test('assert.notSameMembers', () => {
  assert.notSameMembers([1, 2, 3], [5, 1, 3], 'pas les mêmes membres');
});

sameDeepMembers ​

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

Affirme que set1 et set2 ont les mêmes membres dans n'importe quel ordre. Utilise une vérification d'égalité profonde.

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

test('assert.sameDeepMembers', () => {
  assert.sameDeepMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { c: 3 }],
    'mêmes membres profonds'
  );
});

notSameDeepMembers ​

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

Affirme que set1 et set2 n'ont pas les mêmes membres dans n'importe quel ordre. Utilise une vérification d'égalité profonde.

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

test('assert.notSameDeepMembers', () => {
  assert.notSameDeepMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { c: 3 }],
    'pas les mêmes membres profonds'
  );
});

sameOrderedMembers ​

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

Affirme que set1 et set2 ont les mêmes membres dans le même ordre. Utilise une vérification d'égalité stricte (===).

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

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

notSameOrderedMembers ​

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

Affirme que set1 et set2 n'ont pas les mêmes membres dans le même ordre. Utilise une vérification d'égalité stricte (===).

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

test('assert.notSameOrderedMembers', () => {
  assert.notSameOrderedMembers(
    [1, 2, 3],
    [2, 1, 3],
    'pas les mêmes membres ordonnés'
  );
});

sameDeepOrderedMembers ​

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

Affirme que set1 et set2 ont les mêmes membres dans le même ordre. Utilise une vérification d'égalité profonde.

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 membres ordonnés profonds'
  );
});

notSameDeepOrderedMembers ​

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

Affirme que set1 et set2 n'ont pas les mêmes membres dans le même ordre. Utilise une vérification 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 }],
    'pas les mêmes membres ordonnés profonds'
  );
  assert.notSameDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }, { c: 3 }],
    'pas les mêmes membres ordonnés profonds'
  );
});

includeMembers ​

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

Affirme que subset est inclus dans superset dans n'importe quel ordre. Utilise une vérification d'égalité stricte (===). Les doublons sont ignorés.

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

test('assert.includeMembers', () => {
  assert.includeMembers([1, 2, 3], [2, 1, 2], 'inclure les membres');
});

notIncludeMembers ​

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

Affirme que subset n'est pas inclus dans superset dans n'importe quel ordre. Utilise une vérification d'égalité stricte (===). Les doublons sont ignorés.

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

test('assert.notIncludeMembers', () => {
  assert.notIncludeMembers([1, 2, 3], [5, 1], 'ne pas inclure les membres');
});

includeDeepMembers ​

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

Affirme que subset est inclus dans superset dans n'importe quel ordre. Utilise une vérification d'égalité profonde. Les doublons 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 }],
    'inclure les membres profonds'
  );
});

notIncludeDeepMembers ​

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

Affirme que subset n'est pas inclus dans superset dans n'importe quel ordre. Utilise une vérification d'égalité profonde. Les doublons sont ignorés.

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

test('assert.notIncludeDeepMembers', () => {
  assert.notIncludeDeepMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { f: 5 }],
    'ne pas inclure les membres profonds'
  );
});

includeOrderedMembers ​

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

Affirme que subset est inclus dans superset dans le même ordre, en commençant par le premier élément de superset. Utilise une vérification d'égalité stricte (===).

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

test('assert.includeOrderedMembers', () => {
  assert.includeOrderedMembers([1, 2, 3], [1, 2], 'inclure les membres ordonnés');
});

notIncludeOrderedMembers ​

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

Affirme que subset n'est pas inclus dans superset dans le même ordre, en commençant par le premier élément de superset. Utilise une vérification d'égalité stricte (===).

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

test('assert.notIncludeOrderedMembers', () => {
  assert.notIncludeOrderedMembers(
    [1, 2, 3],
    [2, 1],
    'ne pas inclure les membres ordonnés'
  );
  assert.notIncludeOrderedMembers(
    [1, 2, 3],
    [2, 3],
    'ne pas inclure les membres ordonnés'
  );
});

includeDeepOrderedMembers ​

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

Affirme que subset est inclus dans superset dans le même ordre, en commençant par le premier élément de superset. Utilise une vérification d'égalité profonde.

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

test('assert.includeDeepOrderedMembers', () => {
  assert.includeDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ a: 1 }, { b: 2 }],
    'inclure les membres ordonnés profonds'
  );
});

notIncludeDeepOrderedMembers ​

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

Affirme que subset n'est pas inclus dans superset dans le même ordre, en commençant par le premier élément de superset. Utilise une vérification d'égalité profonde.

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

test('assert.notIncludeDeepOrderedMembers', () => {
  assert.notIncludeDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ a: 1 }, { f: 5 }],
    'ne pas inclure les membres ordonnés profonds'
  );
  assert.notIncludeDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { a: 1 }],
    'ne pas inclure les membres ordonnés profonds'
  );
  assert.notIncludeDeepOrderedMembers(
    [{ a: 1 }, { b: 2 }, { c: 3 }],
    [{ b: 2 }, { c: 3 }],
    'ne pas inclure les membres ordonnés profonds'
  );
});

oneOf ​

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

Affirme que la valeur non-objet, non-tableau inList apparaît dans le tableau plat list.

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

test('assert.oneOf', () => {
  assert.oneOf(1, [2, 1], 'Non trouvé dans la liste');
});

changes ​

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

Affirme qu'un modifier modifie la property d'un object.

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

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

changesBy ​

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

Affirme qu'un modifier modifie la property d'un object d'une change spécifique.

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

Affirme qu'un modifier ne modifie pas la property d'un object.

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

Affirme qu'un modifier modifie la property d'un object ou la valeur de retour d'un modifier, mais pas d'une change spécifique.

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

Affirme qu'un modifier augmente la property numérique d'un object.

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

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

increasesBy ​

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

Affirme qu'un modifier augmente la property numérique d'un object ou la valeur de retour d'un modifier d'une change spécifique.

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

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

doesNotIncrease ​

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

Affirme qu'un modifier n'augmente pas la property numérique d'un object.

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

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

increasesButNotBy ​

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

Affirme qu'un modifier augmente la property numérique d'un object ou la valeur de retour d'un modifier, mais pas d'une change spécifique.

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

Affirme qu'un modifier diminue la property numérique d'un object.

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

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

decreasesBy ​

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

Affirme qu'un modifier diminue la property numérique d'un object ou la valeur de retour d'un modifier d'une change spécifique.

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

Affirme qu'un modifier ne diminue pas la property numérique d'un object.

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

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

doesNotDecreaseBy ​

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

Affirme qu'un modifier ne diminue pas la property numérique d'un object ou la valeur de retour d'un modifier d'une change spécifique.

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

Affirme qu'un modifier diminue la property numérique d'un object ou la valeur de retour d'un modifier, mais pas de la quantité spécifiée.

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

Affirme si object n'est pas une valeur fausse (falsy), et lance une erreur si c'est une valeur vraie (truthy). Ceci est ajouté pour permettre à Chai d'être un remplacement direct de la classe assert de Node.

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

test('assert.ifError', () => {
  const err = new Error('Je suis une erreur personnalisée');
  assert.ifError(err); // Relance l'erreur !
});

isExtensible ​

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

Affirme 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

Affirme 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

Affirme que object est scellé (de nouvelles propriétés ne peuvent pas lui être ajoutées et ses 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.freeze({});

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

isNotSealed ​

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

Affirme que object n'est pas scellé (de nouvelles propriétés peuvent lui être ajoutées ou ses 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

Affirme que l'objet est gelé (de nouvelles propriétés ne peuvent pas lui être ajoutées et ses 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

Affirme que object n'est pas gelé (de nouvelles propriétés peuvent lui être ajoutées ou ses 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

Affirme que la 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 de Map et Set, elle vérifie la propriété size. Pour les objets non-fonctionnels, elle obtient le nombre de leurs propres clés de chaîne énumérables.

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

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

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) 2021-Present Vitest Team

https://vitest.dev/api/assert

Publié sous la licence MIT.

Copyright (c) 2021-Present Vitest Team