Spec-Zone.ru › Playwright

GenericAssertions

Класс GenericAssertions предоставляет методы проверки, которые могут использоваться для утверждений о любых значениях в тестах. Новый экземпляр GenericAssertions создается путем вызова expect():

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

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

Методы​

any​

expect.any() соответствует любому экземпляру объекта, созданному из конструктора или соответствующему примитивному типу. Используйте его внутри 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 Функция

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

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​

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 Массив<Объект>

    Ожидаемый массив, являющийся подмножеством полученного значения.

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 число

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

  • numDigits число (необязательно)

    Количество десятичных знаков после запятой, которые должны быть равны.

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 Объект

    Ожидаемый шаблон объекта, который содержит подмножество свойств.

stringContaining​

expect.stringContaining() соответствует строке, содержащей ожидаемую подстроку. Используйте этот метод внутри expect(value).toEqual() для выполнения сопоставления шаблонов.

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

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

Аргументы

  • expected строка

    Ожидаемая подстрока.

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 строка | RegExp

    Шаблон, которому должна соответствовать ожидаемая строка.

toBe​

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

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

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

Аргументы

  • expected Объект

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

toBeCloseTo​

Сравнивает числа с плавающей точкой для приблизительного равенства. Используйте этот метод вместо expect(value).toBe() при сравнении чисел с плавающей точкой.

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

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

Аргументы

  • expected число

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

  • numDigits число (необязательно)

    Количество десятичных знаков после запятой, которые должны быть равны.

toBeDefined​

Убедитесь, что значение не undefined.

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

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

toBeFalsy​

Убедитесь, что значение ложно в контексте булевых значений, одно из false, 0, '', null, undefined или NaN. Используйте этот метод, когда не важны конкретные значения.

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

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

toBeGreaterThan​

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

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

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

Аргументы

  • expected число | [bigint]

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

toBeGreaterThanOrEqual​

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

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

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

Аргументы

  • expected число | [bigint]

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

toBeInstanceOf​

Убедитесь, что значение является экземпляром класса. Используется оператор instanceof.

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

expect(page).toBeInstanceOf(Page);

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

Аргументы

  • expected Функция

    Класс или конструкторская функция.

toBeLessThan​

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

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

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

Аргументы

  • expected число | [bigint]

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

toBeLessThanOrEqual​

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

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

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

Аргументы

  • expected число | [bigint]

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

toBeNaN​

Обеспечивает, что значение является NaN.

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

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

toBeNull​

Обеспечивает, что значение является null.

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

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

toBeTruthy​

Обеспечивает, что значение истинно в контексте булевой переменной, кроме false, 0, '', null, undefined или NaN. Используйте этот метод, когда вам неважно конкретное значение.

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

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

toBeUndefined​

Обеспечивает, что значение является undefined.

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

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

toContain(expected)​

Обеспечивает, что строковое значение содержит ожидаемую подстроку. Сравнение чувствительно к регистру.

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

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

Аргументы

  • expected строка

    Ожидаемая подстрока.

toContain(expected)​

Обеспечивает, что значение является Array или Set и содержит ожидаемый элемент.

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

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

Аргументы

  • expected Объект

    Ожидаемое значение в коллекции.

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 Объект

    Ожидаемое значение в коллекции.

toEqual​

Сравнивает содержимое значения с содержимым ожидаемого значения, выполняя проверку «глубокого равенства».

Для объектов этот метод рекурсивно проверяет равенство всех полей, а не сравнивает объекты по ссылке, как выполняет 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(value).any()
  • expect(value).anything()
  • expect(value).arrayContaining()
  • expect(value).closeTo()
  • expect(value).objectContaining()
  • expect(value).stringContaining()
  • expect(value).stringMatching()

Вот пример, который утверждает некоторые значения внутри сложного объекта:

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 Объект

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

toHaveLength​

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

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

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

Аргументы

  • expected число

    Ожидаемая длина.

toHaveProperty​

Обеспечивает, что свойство по указанному keyPath существует в объекте и, при необходимости, проверяет, что свойство равно ожидаемому. Равенство проверяется рекурсивно, аналогично 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 строка

    Путь к свойству. Используйте нотацию с точкой a.b для проверки вложенных свойств и индексированную a[2] нотацию для проверки вложенных элементов массива.

  • expected Объект (необязательно)

    Необязательное ожидаемое значение для сравнения со свойством.

toMatch​

Обеспечивает, что строковое значение соответствует регулярному выражению.

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

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

Аргументы

  • expected RegExp | строка

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

toMatchObject​

Сравнивает содержимое значения с содержимым ожидаемого значения, выполняя проверку «глубокого равенства». Разрешает наличие дополнительных свойств в значении, в отличие от 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 Объект | Массив

    Ожидаемое значение объекта для сопоставления.

toStrictEqual​

Сравнивает содержимое значения с содержимым ожидаемого значения и их типы.

Отличия от 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 Объект

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

toThrow​

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

Необязательно сравнивает ошибку с ожидаемой. Разрешенные ожидаемые значения:

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

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

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

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

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

Аргументы

  • expected Объект (необязательно)

    Ожидаемое сообщение об ошибке или объект ошибки.

toThrowError​

Псевдоним для expect(value).toThrow().

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

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

Аргументы

  • expected Объект (необязательно)

    Ожидаемое сообщение об ошибке или объект ошибки.

Свойства​

not​

Делает проверку на противоположное условие. Например, следующий код проходит:

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

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

expect(value).not

Тип

  • GenericAssertions

© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-genericassertions

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API