Skip to main content

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() для выполнения сопоставления с шаблоном.

Использование

// Соответствие экземпляру класса.
class Example {}
expect(new Example()).toEqual(expect.any(Example));

// Соответствие любому числу.
expect({ prop: 1 }).toEqual({ prop: expect.any(Number) });

// Соответствие любой строке.
expect('abc').toEqual(expect.any(String));

Аргументы

  • constructor [Function]#

    Конструктор ожидаемого объекта, например, ExampleClass, или примитивный тип, такой как Number.


anything

Добавлено в: v1.9 genericAssertions.anything

expect.anything() соответствует всему, кроме null и undefined. Используйте его внутри 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() для выполнения сопоставления с шаблоном. При простом сравнении двух чисел предпочтительнее использовать 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() для выполнения сопоставления с шаблоном. Свойства объекта могут быть сопоставителями для дальнейшего ослабления ожидания. См. примеры.

Использование

// Утверждение некоторых свойств.
expect({ foo: 1, bar: 2 }).toEqual(expect.objectContaining({ foo: 1 }));

// Сопоставители также могут быть использованы для свойств.
expect({ foo: 1, bar: 2 }).toEqual(expect.objectContaining({ bar: expect.any(Number) }));

// Сложное сопоставление под-свойств.
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/));

// Внутри другого сопоставителя.
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

Сравнивает значение с expected с помощью вызова Object.is. Этот метод сравнивает объекты по ссылке, а не по их содержимому, аналогично оператору строгого равенства ===.

Использование

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, 0, '', null, undefined или NaN. Используйте этот метод, когда вам не важно конкретное значение.

Использование

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

toBeGreaterThan

Добавлено в: v1.9 genericAssertions.toBeGreaterThan

Убеждается, что value > expected для числовых или больших целых значений.

Использование

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

Аргументы

  • expected [number] | [bigint]#

    Значение для сравнения.


toBeGreaterThanOrEqual

Добавлено в: v1.9 genericAssertions.toBeGreaterThanOrEqual

Убеждается, что 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

Убеждается, что value < expected для числовых или больших целых значений.

Использование

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

Аргументы

  • expected [number] | [bigint]#

    Значение для сравнения.


toBeLessThanOrEqual

Добавлено в: v1.9 genericAssertions.toBeLessThanOrEqual

Убеждается, что 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

Убеждается, что значение истинно в булевом контексте, всё, кроме false, 0, '', null, undefined или 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() выполняет проверку глубокого равенства, сравнивая содержимое полученных и ожидаемых значений. Чтобы убедиться, что два объекта ссылаются на один и тот же экземпляр, используйте 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

Убеждается, что значение имеет свойство .length, равное expected. Полезно для массивов и строк.

Использование

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/);

Аргументы

  • expected [RegExp] | [string]#

    Регулярное выражение для сопоставления.


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():

  • Ключи с неопределенными свойствами проверяются. Например, { a: undefined, b: 2 } не соответствует { b: 2 }.
  • Разреженность массива проверяется. Например, [, 1] не соответствует [undefined, 1].
  • Типы объектов проверяются на равенство. Например, экземпляр класса с полями a и b не будет равен литеральному объекту с полями a и b.

Использование

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

Аргументы

  • expected [Object]#

    Ожидаемое значение.


toThrow

Добавлено в: v1.9 genericAssertions.toThrow

Вызывает функцию и убеждается, что она выбрасывает ошибку.

Опционально сравнивает ошибку с expected. Допустимые ожидаемые значения:

  • Регулярное выражение - сообщение об ошибке должно соответствовать шаблону.
  • Строка - сообщение об ошибке должно включать подстроку.
  • Объект ошибки - сообщение об ошибке должно быть равно свойству message объекта.
  • Класс ошибки - объект ошибки должен быть экземпляром класса.

Использование

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

Тип

  • [GenericAssertions]