メインコンテンツへスキップ

GenericAssertions

GenericAssertions クラスは、テスト内のあらゆる値についてアサーションを行うために使用できるアサーションメソッドを提供します。GenericAssertions の新しいインスタンスは、expect() を呼び出すことで作成されます。

import { test, expect } from '@playwright/test';

test('assert a value', async ({ page }) => {
const value = 1;
expect(value).toBe(2);
});

メソッド

any

追加バージョン: v1.9 genericAssertions.any

expect.any() は、constructor または対応するプリミティブ型から作成された任意のオブジェクトインスタンスに一致します。パターンマッチングを実行するために、expect(value).toEqual() の内部で使用します。

使用方法

// Match instance of a class.
class Example {}
expect(new Example()).toEqual(expect.any(Example));

// Match any number.
expect({ prop: 1 }).toEqual({ prop: expect.any(Number) });

// Match any string.
expect('abc').toEqual(expect.any(String));

引数

  • constructor Function#

    ExampleClass のような期待されるオブジェクトのコンストラクター、または Number のようなプリミティブなボックス化された型。


anything

追加バージョン: v1.9 genericAssertions.anything

expect.anything() は、nullundefined を除くすべてに一致します。パターンマッチングを実行するために、expect(value).toEqual() の内部で使用します。

使用方法

const value = { prop: 1 };
expect(value).toEqual({ prop: expect.anything() });
expect(value).not.toEqual({ otherProp: expect.anything() });

arrayContaining

追加バージョン: v1.9 genericAssertions.arrayContaining

expect.arrayContaining() は、期待される配列内のすべての要素を任意の順序で含む配列に一致します。受け取った配列は、期待される配列のスーパーセットであり、いくつかの余分な要素を含む可能性があることに注意してください。

パターンマッチングを実行するために、このメソッドを expect(value).toEqual() の内部で使用します。

使用方法

expect([1, 2, 3]).toEqual(expect.arrayContaining([3, 1]));
expect([1, 2, 3]).not.toEqual(expect.arrayContaining([1, 4]));

引数

  • expected Array<Object>#

    受け取った値のサブセットである期待される配列。


closeTo

追加バージョン: v1.9 genericAssertions.closeTo

浮動小数点数を近似的に比較します。パターンマッチングを実行するために、このメソッドを expect(value).toEqual() の内部で使用します。2つの数値を比較するだけであれば、expect(value).toBeCloseTo() を使用することを推奨します。

使用方法

expect({ prop: 0.1 + 0.2 }).not.toEqual({ prop: 0.3 });
expect({ prop: 0.1 + 0.2 }).toEqual({ prop: expect.closeTo(0.3, 5) });

引数

  • expected number#

    期待される値。

  • numDigits number (オプション)#

    小数点以下の桁数で、一致する必要がある桁数を指定します。


objectContaining

追加バージョン: v1.9 genericAssertions.objectContaining

expect.objectContaining() は、期待されるオブジェクト内のすべてのプロパティを含み、それに一致するオブジェクトに一致します。受け取ったオブジェクトは、期待されるオブジェクトのスーパーセットであり、いくつかの余分なプロパティを含む可能性があることに注意してください。

パターンマッチングを実行するために、このメソッドを expect(value).toEqual() の内部で使用します。オブジェクトのプロパティは、期待値をさらに緩和するためのマッチャーにすることができます。例を参照してください。

使用方法

// Assert some of the properties.
expect({ foo: 1, bar: 2 }).toEqual(expect.objectContaining({ foo: 1 }));

// Matchers can be used on the properties as well.
expect({ foo: 1, bar: 2 }).toEqual(expect.objectContaining({ bar: expect.any(Number) }));

// Complex matching of sub-properties.
expect({
list: [1, 2, 3],
obj: { prop: 'Hello world!', another: 'some other value' },
extra: 'extra',
}).toEqual(expect.objectContaining({
list: expect.arrayContaining([2, 3]),
obj: expect.objectContaining({ prop: expect.stringContaining('Hello') }),
}));

引数

  • expected Object#

    プロパティのサブセットを含む、期待されるオブジェクトパターン。


stringContaining

追加バージョン: v1.9 genericAssertions.stringContaining

expect.stringContaining() は、期待される部分文字列を含む文字列に一致します。パターンマッチングを実行するために、このメソッドを expect(value).toEqual() の内部で使用します。

使用方法

expect('Hello world!').toEqual(expect.stringContaining('Hello'));

引数

  • expected string#

    期待される部分文字列。


stringMatching

追加バージョン: v1.9 genericAssertions.stringMatching

expect.stringMatching() は、期待されるパターンに一致する受信文字列に一致します。パターンマッチングを実行するために、このメソッドを expect(value).toEqual() の内部で使用します。

使用方法

expect('123ms').toEqual(expect.stringMatching(/\d+m?s/));

// Inside another matcher.
expect({
status: 'passed',
time: '123ms',
}).toEqual({
status: expect.stringMatching(/passed|failed/),
time: expect.stringMatching(/\d+m?s/),
});

引数

  • expected string | RegExp#

    期待される文字列が一致するべきパターン。


toBe

追加バージョン: v1.9 genericAssertions.toBe

`Object.is` を呼び出すことで、値を expected と比較します。このメソッドは、厳密等価演算子 === と同様に、オブジェクトを内容ではなく参照で比較します。

使用方法

const value = { prop: 1 };
expect(value).toBe(value);
expect(value).not.toBe({});
expect(value.prop).toBe(1);

引数

  • expected Object#

    期待される値。


toBeCloseTo

追加バージョン: v1.9 genericAssertions.toBeCloseTo

浮動小数点数を近似的に比較します。浮動小数点数を比較する際には、expect(value).toBe() の代わりにこのメソッドを使用してください。

使用方法

expect(0.1 + 0.2).not.toBe(0.3);
expect(0.1 + 0.2).toBeCloseTo(0.3, 5);

引数

  • expected number#

    期待される値。

  • numDigits number (オプション)#

    小数点以下の桁数で、一致する必要がある桁数を指定します。


toBeDefined

追加バージョン: v1.9 genericAssertions.toBeDefined

値が undefined ではないことを確認します。

使用方法

const value = null;
expect(value).toBeDefined();

toBeFalsy

追加バージョン: v1.9 genericAssertions.toBeFalsy

値が真偽値コンテキストで false であること、つまり false0''nullundefined、または NaN のいずれかであることを確認します。特定の値にこだわらない場合、このメソッドを使用してください。

使用方法

const value = null;
expect(value).toBeFalsy();

toBeGreaterThan

追加バージョン: v1.9 genericAssertions.toBeGreaterThan

数値または `bigint` 値の場合に、value > expected であることを確認します。

使用方法

const value = 42;
expect(value).toBeGreaterThan(1);

引数

  • expected number | [bigint]#

    比較する値。


toBeGreaterThanOrEqual

追加バージョン: v1.9 genericAssertions.toBeGreaterThanOrEqual

数値または `bigint` 値の場合に、value >= expected であることを確認します。

使用方法

const value = 42;
expect(value).toBeGreaterThanOrEqual(42);

引数

  • expected number | [bigint]#

    比較する値。


toBeInstanceOf

追加バージョン: v1.9 genericAssertions.toBeInstanceOf

値がクラスのインスタンスであることを確認します。`instanceof` 演算子を使用します。

使用方法

expect(page).toBeInstanceOf(Page);

class Example {}
expect(new Example()).toBeInstanceOf(Example);

引数

  • expected Function#

    クラスまたはコンストラクター関数。


toBeLessThan

追加バージョン: v1.9 genericAssertions.toBeLessThan

数値または `bigint` 値の場合に、value < expected であることを確認します。

使用方法

const value = 42;
expect(value).toBeLessThan(100);

引数

  • expected number | [bigint]#

    比較する値。


toBeLessThanOrEqual

追加バージョン: v1.9 genericAssertions.toBeLessThanOrEqual

数値または `bigint` 値の場合に、value <= expected であることを確認します。

使用方法

const value = 42;
expect(value).toBeLessThanOrEqual(42);

引数

  • expected number | [bigint]#

    比較する値。


toBeNaN

追加バージョン: v1.9 genericAssertions.toBeNaN

値が NaN であることを確認します。

使用方法

const value = NaN;
expect(value).toBeNaN();

toBeNull

追加バージョン: v1.9 genericAssertions.toBeNull

値が null であることを確認します。

使用方法

const value = null;
expect(value).toBeNull();

toBeTruthy

追加バージョン: v1.9 genericAssertions.toBeTruthy

値が真偽値コンテキストで true であること、つまり false0''nullundefined、または NaN ではない**すべて**であることを確認します。特定の値にこだわらない場合、このメソッドを使用してください。

使用方法

const value = { example: 'value' };
expect(value).toBeTruthy();

toBeUndefined

追加バージョン: v1.9 genericAssertions.toBeUndefined

値が undefined であることを確認します。

使用方法

const value = undefined;
expect(value).toBeUndefined();

toContain(expected)

追加バージョン: v1.9 genericAssertions.toContain(expected)

文字列値が期待される部分文字列を含むことを確認します。比較は大文字と小文字を区別します。

使用方法

const value = 'Hello, World';
expect(value).toContain('World');
expect(value).toContain(',');

引数

  • expected string#

    期待される部分文字列。


toContain(expected)

追加バージョン: v1.9 genericAssertions.toContain(expected)

値が Array または Set であり、期待される項目を含むことを確認します。

使用方法

const value = [1, 2, 3];
expect(value).toContain(2);
expect(new Set(value)).toContain(2);

引数

  • expected Object#

    コレクション内の期待される値。


toContainEqual

追加バージョン: v1.9 genericAssertions.toContainEqual

値が Array または Set であり、期待される項目に等しい項目を含むことを確認します。

オブジェクトの場合、このメソッドは expect(value).toContain() によって行われるような参照によるオブジェクト比較ではなく、すべてのフィールドの等価性を再帰的にチェックします。

プリミティブ値の場合、このメソッドは expect(value).toContain() と同等です。

使用方法

const value = [
{ example: 1 },
{ another: 2 },
{ more: 3 },
];
expect(value).toContainEqual({ another: 2 });
expect(new Set(value)).toContainEqual({ another: 2 });

引数

  • expected Object#

    コレクション内の期待される値。


toEqual

追加バージョン: v1.9 genericAssertions.toEqual

「ディープイコール」チェックを実行し、値の内容と expected の内容を比較します。

オブジェクトの場合、このメソッドは expect(value).toBe() によって行われるような参照によるオブジェクト比較ではなく、すべてのフィールドの等価性を再帰的にチェックします。

プリミティブ値の場合、このメソッドは expect(value).toBe() と同等です。

使用方法

const value = { prop: 1 };
expect(value).toEqual({ prop: 1 });

非厳密な等価性

expect(value).toEqual() は、受信値と期待値の内容を比較するディープイコールチェックを実行します。2つのオブジェクトが同じインスタンスを参照していることを確認するには、代わりに expect(value).toBe() を使用してください。

expect(value).toEqual() は、undefined プロパティと配列項目を無視し、オブジェクト型が等しいことを要求しません。より厳密なマッチングには、expect(value).toStrictEqual() を使用してください。

パターンマッチング

expect(value).toEqual() は、次のマッチャーの助けを借りて、オブジェクト、配列、およびプリミティブ型に対してパターンマッチングを実行するためにも使用できます。

ここに、複雑なオブジェクト内のいくつかの値をアサートする例を示します。

expect({
list: [1, 2, 3],
obj: { prop: 'Hello world!', another: 'some other value' },
extra: 'extra',
}).toEqual(expect.objectContaining({
list: expect.arrayContaining([2, 3]),
obj: expect.objectContaining({ prop: expect.stringContaining('Hello') }),
}));

引数

  • expected Object#

    期待される値。


toHaveLength

追加バージョン: v1.9 genericAssertions.toHaveLength

値が expected と等しい .length プロパティを持つことを確認します。配列や文字列に役立ちます。

使用方法

expect('Hello, World').toHaveLength(12);
expect([1, 2, 3]).toHaveLength(3);

引数

  • expected number#

    期待される長さ。


toHaveProperty

追加バージョン: v1.9 genericAssertions.toHaveProperty

指定された keyPath にあるプロパティがオブジェクトに存在すること、および必要に応じて、そのプロパティが expected と等しいことを確認します。等価性は、expect(value).toEqual() と同様に、再帰的にチェックされます。

使用方法

const value = {
a: {
b: [42],
},
c: true,
};
expect(value).toHaveProperty('a.b');
expect(value).toHaveProperty('a.b', [42]);
expect(value).toHaveProperty('a.b[0]', 42);
expect(value).toHaveProperty('c');
expect(value).toHaveProperty('c', true);

引数

  • keyPath string#

    プロパティへのパス。ネストされたプロパティをチェックするにはドット記法 a.b を使用し、ネストされた配列項目をチェックするにはインデックス記法 a[2] を使用します。

  • expected Object (オプション)#

    プロパティと比較するためのオプションの期待値。


toMatch

追加バージョン: v1.9 genericAssertions.toMatch

文字列値が正規表現に一致することを確認します。

使用方法

const value = 'Is 42 enough?';
expect(value).toMatch(/Is \d+ enough/);

引数


toMatchObject

追加バージョン: v1.9 genericAssertions.toMatchObject

「ディープイコール」チェックを実行し、値の内容と expected の内容を比較します。expect(value).toEqual() とは異なり、値に余分なプロパティが存在することを許可するため、オブジェクトプロパティのサブセットのみをチェックできます。

配列を比較する場合、項目の数が一致する必要があり、各項目は再帰的にチェックされます。

使用方法

const value = {
a: 1,
b: 2,
c: true,
};
expect(value).toMatchObject({ a: 1, c: true });
expect(value).toMatchObject({ b: 2, c: true });

expect([{ a: 1, b: 2 }]).toMatchObject([{ a: 1 }]);

引数

  • expected Object | Array#

    マッチングする期待されるオブジェクト値。


toStrictEqual

追加バージョン: v1.9 genericAssertions.toStrictEqual

値の内容と expected の内容 **および** その型を比較します。

expect(value).toEqual() との違い

  • undefined プロパティを持つキーがチェックされます。例えば、{ a: undefined, b: 2 }{ b: 2 } と一致しません。
  • 配列の疎性がチェックされます。例えば、[, 1][undefined, 1] と一致しません。
  • オブジェクト型は等しいことがチェックされます。例えば、フィールド ab を持つクラスインスタンスは、フィールド ab を持つリテラルオブジェクトとは等しくありません。

使用方法

const value = { prop: 1 };
expect(value).toStrictEqual({ prop: 1 });

引数

  • expected Object#

    期待される値。


toThrow

追加バージョン: v1.9 genericAssertions.toThrow

関数を呼び出し、エラーをスローすることを確認します。

必要に応じてエラーを expected と比較します。許可される期待値は次のとおりです。

  • 正規表現 - エラーメッセージがパターンに**一致**する必要があります。
  • 文字列 - エラーメッセージが部分文字列を**含む**必要があります。
  • エラーオブジェクト - エラーメッセージがオブジェクトのメッセージプロパティと**等しい**必要があります。
  • エラークラス - エラーオブジェクトがそのクラスの**インスタンス**である必要があります。

使用方法

expect(() => {
throw new Error('Something bad');
}).toThrow();

expect(() => {
throw new Error('Something bad');
}).toThrow(/something/);

expect(() => {
throw new Error('Something bad');
}).toThrow(Error);

引数

  • expected Object (オプション)#

    期待されるエラーメッセージまたはエラーオブジェクト。


toThrowError

追加バージョン: v1.9 genericAssertions.toThrowError

expect(value).toThrow() のエイリアスです。

使用方法

expect(() => {
throw new Error('Something bad');
}).toThrowError();

引数

  • expected Object (オプション)#

    期待されるエラーメッセージまたはエラーオブジェクト。


プロパティ

not

追加バージョン: v1.9 genericAssertions.not

アサーションが逆の条件をチェックするようにします。例えば、以下のコードはパスします。

const value = 1;
expect(value).not.toBe(2);

使用方法

expect(value).not