Skip to content
Vitest 3
Main Navigation ガイド & API設定ブラウザモード高度なAPI
3.2.0
2.1.9
1.6.1
0.34.6

日本語

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

日本語

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

外観

Sidebar Navigation

はじめに

Vitest を選ぶ理由

はじめに

機能

Vitest の設定

API

テストAPIリファレンス

モック関数

Vi

expect

expectTypeOf

assert

assertType

ガイド

コマンドラインインターフェース

テストフィルタリング

テストプロジェクト

レポーター

カバレッジ

スナップショット

モック

並列処理

型テスト

Vitest UI

インソース・テスト

テストコンテキスト

テストアノテーション

テスト環境

マッチャーの拡張

IDE統合

デバッグ

よくあるエラー

移行ガイド

Vitest 3.0 への移行

Jest からの移行

パフォーマンス

テストパフォーマンスのプロファイリング

パフォーマンスの向上

ブラウザーモード

上級者向けAPI

他のテストランナーとの比較

このページの内容

assert ​

Vitest は、アサーションのために chai から assert メソッドを再エクスポートしています。

assert ​

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

指定された expression が真値であることをアサートします。真値でない場合、アサーションは失敗します。

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

test('assert', () => {
  assert('foo' !== 'bar', 'foo should not be equal to bar');
});

fail ​

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

アサーションを強制的に失敗させます。

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

test('assert.fail', () => {
  assert.fail('error message on failure');
  assert.fail('foo', 'bar', 'foo is not bar', '===');
});

isOk ​

  • 型: <T>(value: T, message?: string) => void
  • エイリアス ok

指定された value が真値であることをアサートします。

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

test('assert.isOk', () => {
  assert.isOk('foo', 'every truthy is ok');
  assert.isOk(false, 'this will fail since false is not truthy');
});

isNotOk ​

  • 型: <T>(value: T, message?: string) => void
  • エイリアス notOk

指定された value が偽値であることをアサートします。

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

test('assert.isNotOk', () => {
  assert.isNotOk('foo', 'this will fail, every truthy is not ok');
  assert.isNotOk(false, 'this will pass since false is falsy');
});

equal ​

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

actual と expected の非厳密な等価性 (==) をアサートします。

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

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

notEqual ​

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

actual と expected の非厳密な不等価性 (!=) をアサートします。

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

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

strictEqual ​

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

actual と expected の厳密な等価性 (===) をアサートします。

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

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

deepEqual ​

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

actual が expected と深く等しいことをアサートします。

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

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

notDeepEqual ​

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

actual が expected と深く等しくないことをアサートします。

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

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

isAbove ​

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

valueToCheck が valueToBeAbove より厳密に大きい (>) ことをアサートします。

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

test('assert.isAbove', () => {
  assert.isAbove(5, 2, '5 is strictly greater than 2');
});

isAtLeast ​

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

valueToCheck が valueToBeAtLeast 以上 (>=) であることをアサートします。

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

test('assert.isAtLeast', () => {
  assert.isAtLeast(5, 2, '5 is greater or equal to 2');
  assert.isAtLeast(3, 3, '3 is greater or equal to 3');
});

isBelow ​

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

valueToCheck が valueToBeBelow より厳密に小さい (<) ことをアサートします。

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

test('assert.isBelow', () => {
  assert.isBelow(3, 6, '3 is strictly less than 6');
});

isAtMost ​

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

valueToCheck が valueToBeAtMost 以下 (<=) であることをアサートします。

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

test('assert.isAtMost', () => {
  assert.isAtMost(3, 6, '3 is less than or equal to 6');
  assert.isAtMost(4, 4, '4 is less than or equal to 4');
});

isTrue ​

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

value が true であることをアサートします。

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

const testPassed = true;

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

isNotTrue ​

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

value が true ではないことをアサートします。

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

const testPassed = 'ok';

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

isFalse ​

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

value が false であることをアサートします。

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

const testPassed = false;

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

isNotFalse ​

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

value が false ではないことをアサートします。

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

const testPassed = 'no';

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

isNull ​

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

value が null であることをアサートします。

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

const error = null;

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

isNotNull ​

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

value が null ではないことをアサートします。

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

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

test('assert.isNotNull', () => {
  assert.isNotNull(error, 'error is not null but object');
});

isNaN ​

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

value が NaN であることをアサートします。

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

const calculation = 1 * 'vitest';

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

isNotNaN ​

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

value が NaN ではないことをアサートします。

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

const calculation = 1 * 2;

test('assert.isNotNaN', () => {
  assert.isNotNaN(calculation, '1 * 2 is Not NaN but 2');
});

exists ​

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

value が null でも undefined でもないことをアサートします。

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

const name = 'foo';

test('assert.exists', () => {
  assert.exists(name, 'foo is neither null nor undefined');
});

notExists ​

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

value が null または undefined であることをアサートします。

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

const foo = null;
const bar = undefined;

test('assert.notExists', () => {
  assert.notExists(foo, 'foo is null so not exist');
  assert.notExists(bar, 'bar is undefined so not exist');
});

isUndefined ​

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

value が undefined であることをアサートします。

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

const name = undefined;

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

isDefined ​

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

value が undefined ではないことをアサートします。

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

const name = 'foo';

test('assert.isDefined', () => {
  assert.isDefined(name, 'name is not undefined');
});

isFunction ​

  • 型: <T>(value: T, message?: string) => void
  • エイリアス: isCallablevalue が関数であることをアサートします。
ts
import { assert, test } from 'vitest';

function name() {
  return 'foo';
}

test('assert.isFunction', () => {
  assert.isFunction(name, 'name is function');
});

isNotFunction ​

  • 型: <T>(value: T, message?: string) => void
  • エイリアス: isNotCallable

value が関数ではないことをアサートします。

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

const name = 'foo';

test('assert.isNotFunction', () => {
  assert.isNotFunction(name, 'name is not function but string');
});

isObject ​

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

value が Object 型のオブジェクトであることをアサートします (Object.prototype.toString で判別)。このアサーションはサブクラス化されたオブジェクトには一致しません。

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

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

test('assert.isObject', () => {
  assert.isObject(someThing, 'someThing is object');
});

isNotObject ​

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

value が Object 型のオブジェクトではないことをアサートします (Object.prototype.toString で判別)。このアサーションはサブクラス化されたオブジェクトには一致しません。

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

const someThing = 'redCircle';

test('assert.isNotObject', () => {
  assert.isNotObject(someThing, 'someThing is not object but string');
});

isArray ​

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

value が配列であることをアサートします。

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

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

test('assert.isArray', () => {
  assert.isArray(color, 'color is array');
});

isNotArray ​

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

value が配列ではないことをアサートします。

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

const color = 'red';

test('assert.isNotArray', () => {
  assert.isNotArray(color, 'color is not array but string');
});

isString ​

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

value が文字列であることをアサートします。

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

const color = 'red';

test('assert.isString', () => {
  assert.isString(color, 'color is string');
});

isNotString ​

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

value が文字列ではないことをアサートします。

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

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

test('assert.isNotString', () => {
  assert.isNotString(color, 'color is not string but array');
});

isNumber ​

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

value が数値であることをアサートします。

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

const colors = 3;

test('assert.isNumber', () => {
  assert.isNumber(colors, 'colors is number');
});

isNotNumber ​

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

value が数値ではないことをアサートします。

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

const colors = '3 colors';

test('assert.isNotNumber', () => {
  assert.isNotNumber(colors, 'colors is not number but strings');
});

isFinite ​

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

value が有限の数値であることをアサートします (NaN、Infinity ではない)。

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

const colors = 3;

test('assert.isFinite', () => {
  assert.isFinite(colors, 'colors is number not NaN or Infinity');
});

isBoolean ​

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

value がブール値であることをアサートします。

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

const isReady = true;

test('assert.isBoolean', () => {
  assert.isBoolean(isReady, 'isReady is a boolean');
});

isNotBoolean ​

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

value がブール値ではないことをアサートします。

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

const isReady = 'sure';

test('assert.isNotBoolean', () => {
  assert.isNotBoolean(isReady, 'isReady is not a boolean but string');
});

typeOf ​

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

value の型が name であることをアサートします (Object.prototype.toString で判別)。

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

test('assert.typeOf', () => {
  assert.typeOf({ color: 'red' }, 'object', 'we have an object');
  assert.typeOf(['red', 'green'], 'array', 'we have an array');
  assert.typeOf('red', 'string', 'we have a string');
  assert.typeOf(/red/, 'regexp', 'we have a regular expression');
  assert.typeOf(null, 'null', 'we have a null');
  assert.typeOf(undefined, 'undefined', 'we have an undefined');
});

notTypeOf ​

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

value の型が name ではないことをアサートします (Object.prototype.toString で判別)。

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

test('assert.notTypeOf', () => {
  assert.notTypeOf('red', 'number', '"red" is not a number');
});

instanceOf ​

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

value が constructor のインスタンスであることをアサートします。

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

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

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

test('assert.instanceOf', () => {
  assert.instanceOf(foo, Person, 'foo is an instance of Person');
  assert.instanceOf(coffee, Tea, 'coffee is an instance of Tea');
});

notInstanceOf ​

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

value が constructor のインスタンスではないことをアサートします。

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

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

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

test('assert.notInstanceOf', () => {
  assert.notInstanceOf(foo, Tea, 'foo is not an instance of Tea');
});

include ​

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

haystack が needle を含むことをアサートします。配列内の値、文字列内の部分文字列、またはオブジェクト内のプロパティのサブセットが含まれていることをアサートするために使用できます。

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

test('assert.include', () => {
  assert.include([1, 2, 3], 2, 'array contains value');
  assert.include('foobar', 'foo', 'string contains substring');
  assert.include(
    { foo: 'bar', hello: 'universe' },
    { foo: 'bar' },
    'object contains property'
  );
});

notInclude ​

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

haystack が needle を含まないことをアサートします。配列内の値、文字列内の部分文字列、またはオブジェクト内のプロパティのサブセットが含まれていないことをアサートするために使用できます。

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

test('assert.notInclude', () => {
  assert.notInclude([1, 2, 3], 4, "array doesn't contain 4");
  assert.notInclude('foobar', 'baz', "foobar doesn't contain baz");
  assert.notInclude(
    { foo: 'bar', hello: 'universe' },
    { foo: 'baz' },
    "object doesn't contain property"
  );
});

deepInclude ​

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

haystack が needle を含むことをアサートします。配列内の値の包含、またはオブジェクト内のプロパティのサブセットの包含をアサートするために使用できます。深い等価性が使用されます。

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

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

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

notDeepInclude ​

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

haystack が needle を含まないことをアサートします。配列内の値の非包含、またはオブジェクト内のプロパティのサブセットの非包含をアサートするために使用できます。深い等価性が使用されます。

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

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

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

nestedInclude ​

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

haystack が needle を含むことをアサートします。オブジェクト内のプロパティのサブセットの包含をアサートするために使用できます。ネストされたプロパティを参照するためにドット記法とブラケット記法を使用できます。プロパティ名内の「[]」と「.」は二重バックスラッシュでエスケープできます。

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

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

notNestedInclude ​

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

haystack が needle を含まないことをアサートします。オブジェクト内のプロパティのサブセットの包含をアサートするために使用できます。ネストされたプロパティを参照するためにドット記法とブラケット記法を使用できます。プロパティ名内の「[]」と「.」は二重バックスラッシュでエスケープできます。

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

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

deepNestedInclude ​

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

haystack が needle を含むことをアサートします。オブジェクト内のプロパティのサブセットの包含をアサートするために使用できます。深い等価性をチェックします。ネストされたプロパティを参照するためにドット記法とブラケット記法を使用できます。プロパティ名内の「[]」と「.」は二重バックスラッシュでエスケープできます。

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

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

notDeepNestedInclude ​

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

haystack が needle を含まないことをアサートします。オブジェクト内のプロパティのサブセットの非包含をアサートするために使用できます。深い等価性をチェックします。ネストされたプロパティを参照するためにドット記法とブラケット記法を使用できます。プロパティ名内の「[]」と「.」は二重バックスラッシュでエスケープできます。

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

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

ownInclude ​

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

haystack が needle を含むことをアサートします。継承されたプロパティを無視しながら、オブジェクト内のプロパティのサブセットの包含をアサートするために使用できます。

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

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

notOwnInclude ​

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

haystack が needle を含まないことをアサートします。継承されたプロパティを無視しながら、オブジェクト内のプロパティのサブセットが含まれていないことをアサートするために使用できます。

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

const obj1 = {
  b: 2,
};

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

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

deepOwnInclude ​

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

haystack が needle を含むことをアサートします。継承されたプロパティを無視し、深い等価性をチェックしながら、オブジェクト内のプロパティのサブセットの包含をアサートするために使用できます。

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

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

notDeepOwnInclude ​

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

haystack が needle を含まないことをアサートします。継承されたプロパティを無視し、深い等価性をチェックしながら、オブジェクト内のプロパティのサブセットが含まれていないことをアサートするために使用できます。

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

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

match ​

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

value が正規表現 regexp に一致することをアサートします。

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

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

notMatch ​

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

value が正規表現 regexp に一致しないことをアサートします。

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

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

property ​

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

object が property という名前の直接的または継承されたプロパティを持つことをアサートします。

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

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

notProperty ​

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

object が property という名前の直接的または継承されたプロパティを持たないことをアサートします。

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

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

propertyVal ​

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

object が property という名前の直接的または継承されたプロパティを持ち、その値が value であることをアサートします。厳密な等価性チェック (===) を使用します。

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

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

notPropertyVal ​

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

object が property という名前の直接的または継承されたプロパティを持たない、またはその値が value ではないことをアサートします。厳密な等価性チェック (===) を使用します。

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

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

deepPropertyVal ​

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

object が property という名前の直接的または継承されたプロパティを持ち、その値が value であることをアサートします。深い等価性チェックを使用します。

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

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

notDeepPropertyVal ​

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

object が property という名前の直接的または継承されたプロパティを持たない、またはその値が value ではないことをアサートします。深い等価性チェックを使用します。

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

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

nestedProperty ​

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

object が property という名前の直接的または継承されたプロパティを持つことをアサートします。property はネストされた参照にドット記法とブラケット記法を使用する文字列にすることができます。

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

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

notNestedProperty ​

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

object が property という名前の直接的または継承されたプロパティを持たないことをアサートします。property はネストされた参照にドット記法とブラケット記法を使用する文字列にすることができます。

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

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

nestedPropertyVal ​

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

object が property という名前のプロパティを持ち、その値が value であることをアサートします。property はネストされた参照にドット記法とブラケット記法を使用できます。厳密な等価性チェック (===) を使用します。

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

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

notNestedPropertyVal ​

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

object が property という名前のプロパティを持たない、またはその値が value ではないことをアサートします。property はネストされた参照にドット記法とブラケット記法を使用できます。厳密な等価性チェック (===) を使用します。

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

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

deepNestedPropertyVal ​

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

object が property という名前のプロパティを持ち、その値が value であることをアサートします。property はネストされた参照にドット記法とブラケット記法を使用できます。深い等価性チェックを使用します。

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 ​

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

object が property という名前のプロパティを持たない、またはその値が value ではないことをアサートします。property はネストされた参照にドット記法とブラケット記法を使用できます。深い等価性チェックを使用します。

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

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

lengthOf ​

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

object が期待される値の length または size を持つことをアサートします。

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

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

hasAnyKeys ​

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

object が提供された keys のうち少なくとも1つを持つことをアサートします。キーの配列の代わりに単一のオブジェクトを提供することもでき、そのオブジェクトのキーが期待されるキーのセットとして使用されます。

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

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

hasAllKeys ​

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

object が提供された keys のすべてを、かつそれらのみをすべて持つことをアサートします。キーの配列の代わりに単一のオブジェクトを提供することもでき、そのオブジェクトのキーが期待されるキーのセットとして使用されます。

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

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

containsAllKeys ​

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

object が提供された keys のすべてを持つが、それ以外のキーも持つ可能性があることをアサートします。キーの配列の代わりに単一のオブジェクトを提供することもでき、そのオブジェクトのキーが期待されるキーのセットとして使用されます。

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

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

doesNotHaveAnyKeys ​

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

object が提供された keys のいずれも持たないことをアサートします。キーの配列の代わりに単一のオブジェクトを提供することもでき、そのオブジェクトのキーが期待されるキーのセットとして使用されます。

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

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

doesNotHaveAllKeys ​

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

object が提供された keys のうち少なくとも1つを持たないことをアサートします。キーの配列の代わりに単一のオブジェクトを提供することもでき、そのオブジェクトのキーが期待されるキーのセットとして使用されます。

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 ​

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

object が提供された keys のうち少なくとも1つを持つことをアサートします。Set と Map はオブジェクトをキーとして持つことができるため、このアサーションで深い比較を実行できます。キーの配列の代わりに単一のオブジェクトを提供することもでき、そのオブジェクトのキーが期待されるキーのセットとして使用されます。

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

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

hasAllDeepKeys ​

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

object が提供された keys のすべてを、かつそれらのみをすべて持つことをアサートします。Set と Map はオブジェクトをキーとして持つことができるため、このアサーションで深い比較を実行できます。キーの配列の代わりに単一のオブジェクトを提供することもでき、そのオブジェクトのキーが期待されるキーのセットとして使用されます。

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

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

containsAllDeepKeys ​

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

object が提供された keys のすべてを含むことをアサートします。Set と Map はオブジェクトをキーとして持つことができるため、このアサーションで深い比較を実行できます。キーの配列の代わりに単一のオブジェクトを提供することもでき、そのオブジェクトのキーが期待されるキーのセットとして使用されます。

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

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

doesNotHaveAnyDeepKeys ​

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

object が提供された keys のいずれも持たないことをアサートします。Set と Map はオブジェクトをキーとして持つことができるため、このアサーションで深い比較を実行できます。キーの配列の代わりに単一のオブジェクトを提供することもでき、そのオブジェクトのキーが期待されるキーのセットとして使用されます。

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

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

doesNotHaveAllDeepKeys ​

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

object が提供された keys のうち少なくとも1つを持たないことをアサートします。Set と Map はオブジェクトをキーとして持つことができるため、このアサーションで深い比較を実行できます。キーの配列の代わりに単一のオブジェクトを提供することもでき、そのオブジェクトのキーが期待されるキーのセットとして使用されます。

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

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

throws ​

  • 型:
    • (fn: () => void, errMsgMatcher?: RegExp | string, ignored?: any, message?: string) => void
    • (fn: () => void, errorLike?: ErrorConstructor | Error | null, errMsgMatcher?: RegExp | string | null, message?: string) => void
  • エイリアス:
    • throw
    • Throw

errorLike が Error コンストラクタの場合、fn が errorLike のインスタンスであるエラーをスローすることをアサートします。errorLike が Error インスタンスの場合、スローされたエラーが errorLike と同じインスタンスであることをアサートします。errMsgMatcher が提供されている場合、スローされたエラーが errMsgMatcher に一致するメッセージを持つこともアサートします。

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

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

doesNotThrow ​

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

errorLike が Error コンストラクタの場合、fn が errorLike のインスタンスであるエラーをスローしないことをアサートします。errorLike が Error インスタンスの場合、スローされたエラーが errorLike と同じインスタンスではないことをアサートします。errMsgMatcher が提供されている場合、スローされたエラーが errMsgMatcher に一致するメッセージを持たないこともアサートします。

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

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

operator ​

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

operator を使用して val1 と val2 を比較します。

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

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

closeTo ​

  • 型: (actual: number, expected: number, delta: number, message?: string) => void
  • エイリアス: approximately

actual が expected に +/- delta の範囲内で等しいことをアサートします。

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

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

sameMembers ​

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

set1 と set2 が任意の順序で同じメンバーを持つことをアサートします。厳密な等価性チェック (===) を使用します。

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

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

notSameMembers ​

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

set1 と set2 が任意の順序で同じメンバーを持たないことをアサートします。厳密な等価性チェック (===) を使用します。

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

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

sameDeepMembers ​

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

set1 と set2 が任意の順序で同じメンバーを持つことをアサートします。深い等価性チェックを使用します。

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

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

notSameDeepMembers ​

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

set1 と set2 が任意の順序で同じメンバーではないことをアサートします。深い等価性チェックを使用します。

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

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

sameOrderedMembers ​

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

set1 と set2 が同じ順序で同じメンバーを持つことをアサートします。厳密な等価性チェック (===) を使用します。

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

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

notSameOrderedMembers ​

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

set1 と set2 が同じ順序で同じメンバーを持たないことをアサートします。厳密な等価性チェック (===) を使用します。

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

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

sameDeepOrderedMembers ​

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

set1 と set2 が同じ順序で同じメンバーを持つことをアサートします。深い等価性チェックを使用します。

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

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

notSameDeepOrderedMembers ​

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

set1 と set2 が同じ順序で同じメンバーではないことをアサートします。深い等価性チェックを使用します。

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

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

includeMembers ​

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

subset が superset に任意の順序で含まれることをアサートします。厳密な等価性チェック (===) を使用します。重複は無視されます。

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

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

notIncludeMembers ​

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

subset が superset に任意の順序で含まれないことをアサートします。厳密な等価性チェック (===) を使用します。重複は無視されます。

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

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

includeDeepMembers ​

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

subset が superset に任意の順序で含まれることをアサートします。深い等価性チェックを使用します。重複は無視されます。

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 ​

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

subset が superset に任意の順序で含まれないことをアサートします。深い等価性チェックを使用します。重複は無視されます。

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 ​

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

subset が superset の最初の要素から始まる同じ順序で superset に含まれることをアサートします。厳密な等価性チェック (===) を使用します。

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

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

notIncludeOrderedMembers ​

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

subset が superset の最初の要素から始まる同じ順序で superset に含まれないことをアサートします。厳密な等価性チェック (===) を使用します。

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

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

includeDeepOrderedMembers ​

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

subset が superset の最初の要素から始まる同じ順序で superset に含まれることをアサートします。深い等価性チェックを使用します。

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

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

notIncludeDeepOrderedMembers ​

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

subset が superset の最初の要素から始まる同じ順序で superset に含まれないことをアサートします。深い等価性チェックを使用します。

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

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

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

非オブジェクト、非配列の値 inList がフラットな配列 list に含まれることをアサートします。

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

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

changes ​

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

modifier が object の property の値を変更することをアサートします。

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

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

changesBy ​

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

modifier が object の property の値を change だけ変更することをアサートします。

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

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

doesNotChange ​

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

modifier が object の property の値を変更しないことをアサートします。

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 ​

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

modifier が object の property または modifier の戻り値を変更するが、特定の change 量ではないことをアサートします。

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

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

increases ​

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

modifier が数値 object の property の値を増加させることをアサートします。

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

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

increasesBy ​

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

modifier が数値 object の property の値、または modifier の戻り値を change だけ増加させることをアサートします。

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 ​

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

modifier が数値 object の property の値を増加させないことをアサートします。

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

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

increasesButNotBy ​

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

modifier が数値 object の property の値、または modifier の戻り値を change だけ増加させないことをアサートします。

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

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

decreases ​

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

modifier が数値 object の property の値を減少させることをアサートします。

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

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

decreasesBy ​

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

modifier が数値 object の property の値、または modifier の戻り値を change だけ減少させることをアサートします。

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

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

doesNotDecrease ​

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

modifier が数値 object の property の値を減少させないことをアサートします。

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

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

doesNotDecreaseBy ​

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

modifier が数値 object の property の値、または modifier の戻り値を change だけ減少させないことをアサートします。

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

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

decreasesButNotBy ​

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

modifier が数値 object の property の値、または modifier の戻り値を change だけ減少させないことをアサートします。

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

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

ifError ​

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

object が偽値でないことをアサートし、真値である場合はスローします。これは、Chai が Node の assert クラスのドロップイン代替として使用できるように追加されました。

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

test('assert.ifError', () => {
  const err = new Error('I am a custom error');
  assert.ifError(err); // err を再スローします
});

isExtensible ​

  • 型: <T>(object: T, message?: string) => void
  • エイリアス: extensible

object が拡張可能(新しいプロパティを追加できる)であることをアサートします。

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

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

isNotExtensible ​

  • 型: <T>(object: T, message?: string) => void
  • エイリアス: notExtensible

object が拡張可能ではない(新しいプロパティを追加できない)ことをアサートします。

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

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

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

isSealed ​

  • 型: <T>(object: T, message?: string) => void
  • エイリアス: sealed

object がシールされている(新しいプロパティを追加できず、既存のプロパティを削除できない)ことをアサートします。

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

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

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

isNotSealed ​

  • 型: <T>(object: T, message?: string) => void
  • エイリアス: notSealed

object がシールされていない(新しいプロパティを追加でき、既存のプロパティを削除できる)ことをアサートします。

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

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

isFrozen ​

  • 型: <T>(object: T, message?: string) => void
  • エイリアス: frozen

オブジェクトが凍結されている(新しいプロパティを追加できず、既存のプロパティを変更できない)ことをアサートします。

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

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

isNotFrozen ​

  • 型: <T>(object: T, message?: string) => void
  • エイリアス: notFrozen

object が凍結されていない(新しいプロパティを追加でき、既存のプロパティを変更できる)ことをアサートします。

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

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

isEmpty ​

  • 型: <T>(target: T, message?: string) => void
  • エイリアス: empty

target が値を含まないことをアサートします。配列と文字列の場合、length プロパティをチェックします。Map と Set のインスタンスの場合、size プロパティをチェックします。非関数オブジェクトの場合、自身の列挙可能な文字列キーの数を数えます。

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

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

isNotEmpty ​

  • 型: <T>(object: T, message?: string) => void
  • エイリアス: notEmpty

target が値を含むことをアサートします。配列と文字列の場合、length プロパティをチェックします。Map と Set のインスタンスの場合、size プロパティをチェックします。非関数オブジェクトの場合、自身の列挙可能な文字列キーの数を数えます。

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

test('assert.isNotEmpty', () => {
  assert.isNotEmpty([1, 2]);
  assert.isNotEmpty('34');
  assert.isNotEmpty(new Set([5, 6]));
  assert.isNotEmpty({ key: 7 });
});
Pager
前のページexpectTypeOf
次のページassertType

MITライセンス の下で公開されています。

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/api/assert

MITライセンス の下で公開されています。

Copyright (c) 2021-Present Vitest Team