Skip to main content

GenericAssertions

GenericAssertions 类提供了断言方法,可用于对测试中的任何值进行断言。通过调用 expect() 创建 GenericAssertions 的新实例:

¥The GenericAssertions class provides assertion methods that can be used to make assertions about any values in the tests. A new instance of GenericAssertions is created by calling expect():

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

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

方法

¥Methods

any

Added in: v1.9 genericAssertions.any

expect.any() 匹配从 constructor 或相应的基本类型创建的任何对象实例。在 expect(value).toEqual() 内部使用它来执行模式匹配。

¥expect.any() matches any object instance created from the constructor or a corresponding primitive type. Use it inside expect(value).toEqual() to perform pattern matching.

用法

¥Usage

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

参数

¥Arguments

预期对象(如 ExampleClass)或原始装箱类型(如 Number)的构造函数。

¥Constructor of the expected object like ExampleClass, or a primitive boxed type like Number.


anything

Added in: v1.9 genericAssertions.anything

expect.anything() 匹配除 nullundefined 之外的所有内容。在 expect(value).toEqual() 内部使用它来执行模式匹配。

¥expect.anything() matches everything except null and undefined. Use it inside expect(value).toEqual() to perform pattern matching.

用法

¥Usage

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

arrayContaining

Added in: v1.9 genericAssertions.arrayContaining

expect.arrayContaining() 匹配一个包含预期数组中所有元素(按任意顺序)的数组。请注意,接收到的数组可能是预期数组的超集,并包含一些额外的元素。

¥expect.arrayContaining() matches an array that contains all of the elements in the expected array, in any order. Note that received array may be a superset of the expected array and contain some extra elements.

expect(value).toEqual() 内部使用该方法来执行模式匹配。

¥Use this method inside expect(value).toEqual() to perform pattern matching.

用法

¥Usage

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

参数

¥Arguments

预期数组是接收值的子集。

¥Expected array that is a subset of the received value.


closeTo

Added in: v1.9 genericAssertions.closeTo

比较浮点数是否近似相等。在 expect(value).toEqual() 内部使用该方法来执行模式匹配。当只是比较两个数字时,更喜欢 expect(value).toBeCloseTo()

¥Compares floating point numbers for approximate equality. Use this method inside expect(value).toEqual() to perform pattern matching. When just comparing two numbers, prefer expect(value).toBeCloseTo().

用法

¥Usage

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

参数

¥Arguments

期望值。

¥Expected value.

小数点后的小数位数必须相等。

¥The number of decimal digits after the decimal point that must be equal.


objectContaining

Added in: v1.9 genericAssertions.objectContaining

expect.objectContaining() 匹配包含并匹配预期对象中所有属性的对象。请注意,接收到的对象可能是预期对象的超集,并包含一些额外的属性。

¥expect.objectContaining() matches an object that contains and matches all of the properties in the expected object. Note that received object may be a superset of the expected object and contain some extra properties.

expect(value).toEqual() 内部使用该方法来执行模式匹配。对象属性可以是匹配器以进一步放宽期望。请参阅示例。

¥Use this method inside expect(value).toEqual() to perform pattern matching. Object properties can be matchers to further relax the expectation. See examples.

用法

¥Usage

// 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') }),
}));

参数

¥Arguments

包含属性子集的预期对象模式。

¥Expected object pattern that contains a subset of the properties.


stringContaining

Added in: v1.9 genericAssertions.stringContaining

expect.stringContaining() 匹配包含预期子字符串的字符串。在 expect(value).toEqual() 内部使用该方法来执行模式匹配。

¥expect.stringContaining() matches a string that contains the expected substring. Use this method inside expect(value).toEqual() to perform pattern matching.

用法

¥Usage

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

参数

¥Arguments

预期的子串。

¥Expected substring.


stringMatching

Added in: v1.9 genericAssertions.stringMatching

expect.stringMatching() 与接收到的字符串匹配,该字符串又与预期模式匹配。在 expect(value).toEqual() 内部使用该方法来执行模式匹配。

¥expect.stringMatching() matches a received string that in turn matches the expected pattern. Use this method inside expect(value).toEqual() to perform pattern matching.

用法

¥Usage

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

参数

¥Arguments

预期字符串应匹配的模式。

¥Pattern that expected string should match.


toBe

Added in: v1.9 genericAssertions.toBe

通过调用 Object.is 将值与 expected 进行比较。此方法通过引用而不是其内容来比较对象,类似于严格相等运算符 ===

¥Compares value with expected by calling Object.is. This method compares objects by reference instead of their contents, similarly to the strict equality operator ===.

用法

¥Usage

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

参数

¥Arguments

期望值。

¥Expected value.


toBeCloseTo

Added in: v1.9 genericAssertions.toBeCloseTo

比较浮点数是否近似相等。比较浮点数时,使用此方法代替 expect(value).toBe()

¥Compares floating point numbers for approximate equality. Use this method instead of expect(value).toBe() when comparing floating point numbers.

用法

¥Usage

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

参数

¥Arguments

期望值。

¥Expected value.

小数点后的小数位数必须相等。

¥The number of decimal digits after the decimal point that must be equal.


toBeDefined

Added in: v1.9 genericAssertions.toBeDefined

确保该值不是 undefined

¥Ensures that value is not undefined.

用法

¥Usage

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

toBeFalsy

Added in: v1.9 genericAssertions.toBeFalsy

确保值在布尔上下文(false0''nullundefinedNaN 之一)中为 false。当你不关心具体值时使用此方法。

¥Ensures that value is false in a boolean context, one of false, 0, '', null, undefined or NaN. Use this method when you don't care about the specific value.

用法

¥Usage

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

toBeGreaterThan

Added in: v1.9 genericAssertions.toBeGreaterThan

确保 value > expected 代表数字或大整数值。

¥Ensures that value > expected for number or big integer values.

用法

¥Usage

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

参数

¥Arguments

要比较的值。

¥The value to compare to.


toBeGreaterThanOrEqual

Added in: v1.9 genericAssertions.toBeGreaterThanOrEqual

确保 value >= expected 代表数字或大整数值。

¥Ensures that value >= expected for number or big integer values.

用法

¥Usage

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

参数

¥Arguments

要比较的值。

¥The value to compare to.


toBeInstanceOf

Added in: v1.9 genericAssertions.toBeInstanceOf

确保该值是类的实例。使用 instanceof 运算符。

¥Ensures that value is an instance of a class. Uses instanceof operator.

用法

¥Usage

expect(page).toBeInstanceOf(Page);

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

参数

¥Arguments

类或构造函数。

¥The class or constructor function.


toBeLessThan

Added in: v1.9 genericAssertions.toBeLessThan

确保 value < expected 代表数字或大整数值。

¥Ensures that value < expected for number or big integer values.

用法

¥Usage

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

参数

¥Arguments

要比较的值。

¥The value to compare to.


toBeLessThanOrEqual

Added in: v1.9 genericAssertions.toBeLessThanOrEqual

确保 value <= expected 代表数字或大整数值。

¥Ensures that value <= expected for number or big integer values.

用法

¥Usage

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

参数

¥Arguments

要比较的值。

¥The value to compare to.


toBeNaN

Added in: v1.9 genericAssertions.toBeNaN

确保该值为 NaN

¥Ensures that value is NaN.

用法

¥Usage

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

toBeNull

Added in: v1.9 genericAssertions.toBeNull

确保该值为 null

¥Ensures that value is null.

用法

¥Usage

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

toBeTruthy

Added in: v1.9 genericAssertions.toBeTruthy

确保该值在布尔上下文中为 true,但 false0''nullundefinedNaN 除外。当你不关心具体值时使用此方法。

¥Ensures that value is true in a boolean context, anything but false, 0, '', null, undefined or NaN. Use this method when you don't care about the specific value.

用法

¥Usage

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

toBeUndefined

Added in: v1.9 genericAssertions.toBeUndefined

确保该值为 undefined

¥Ensures that value is undefined.

用法

¥Usage

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

toContain(expected)

Added in: v1.9 genericAssertions.toContain(expected)

确保字符串值包含预期的子字符串。比较区分大小写。

¥Ensures that string value contains an expected substring. Comparison is case-sensitive.

用法

¥Usage

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

参数

¥Arguments

预期的子串。

¥Expected substring.


toContain(expected)

Added in: v1.9 genericAssertions.toContain(expected)

确保该值为 ArraySet 并且包含预期项目。

¥Ensures that value is an Array or Set and contains an expected item.

用法

¥Usage

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

参数

¥Arguments

集合中的期望值。。

¥Expected value in the collection.


toContainEqual

Added in: v1.9 genericAssertions.toContainEqual

确保该值是 ArraySet 并且包含等于预期的项目。

¥Ensures that value is an Array or Set and contains an item equal to the expected.

对于对象,此方法递归地检查所有字段的相等性,而不是像 expect(value).toContain() 那样通过引用比较对象。

¥For objects, this method recursively checks equality of all fields, rather than comparing objects by reference as performed by expect(value).toContain().

对于原始值,此方法相当于 expect(value).toContain()

¥For primitive values, this method is equivalent to expect(value).toContain().

用法

¥Usage

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

参数

¥Arguments

集合中的期望值。。

¥Expected value in the collection.


toEqual

Added in: v1.9 genericAssertions.toEqual

将值的内容与 expected 的内容进行比较,执行 "深度平等" 检查。

¥Compares contents of the value with contents of expected, performing "deep equality" check.

对于对象,此方法递归地检查所有字段的相等性,而不是像 expect(value).toBe() 那样通过引用比较对象。

¥For objects, this method recursively checks equality of all fields, rather than comparing objects by reference as performed by expect(value).toBe().

对于原始值,此方法相当于 expect(value).toBe()

¥For primitive values, this method is equivalent to expect(value).toBe().

用法

¥Usage

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

非严格相等

¥Non-strict equality

expect(value).toEqual() 执行深度相等检查,比较接收值和预期值的内容。要确保两个对象引用同一实例,请改用 expect(value).toBe()

¥expect(value).toEqual() performs deep equality check that compares contents of the received and expected values. To ensure two objects reference the same instance, use expect(value).toBe() instead.

expect(value).toEqual() 忽略 undefined 属性和数组项,并且不坚持对象类型相等。如需更严格的匹配,请使用 expect(value).toStrictEqual()

¥expect(value).toEqual() ignores undefined properties and array items, and does not insist on object types being equal. For stricter matching, use expect(value).toStrictEqual().

模式匹配

¥Pattern matching

借助以下匹配器,expect(value).toEqual() 还可用于对对象、数组和基本类型执行模式匹配:

¥expect(value).toEqual() can be also used to perform pattern matching on objects, arrays and primitive types, with the help of the following matchers:

下面是一个断言复杂对象内的一些值的示例:

¥Here is an example that asserts some of the values inside a complex object:

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') }),
}));

参数

¥Arguments

期望值。

¥Expected value.


toHaveLength

Added in: v1.9 genericAssertions.toHaveLength

确保值的 .length 属性等于 expected。对于数组和字符串很有用。

¥Ensures that value has a .length property equal to expected. Useful for arrays and strings.

用法

¥Usage

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

参数

¥Arguments

预期长度。

¥Expected length.


toHaveProperty

Added in: v1.9 genericAssertions.toHaveProperty

确保对象上存在提供的 keyPath 处的属性,并可选择检查该属性是否等于 expected。与 expect(value).toEqual() 类似,递归地检查相等性。

¥Ensures that property at provided keyPath exists on the object and optionally checks that property is equal to the expected. Equality is checked recursively, similarly to expect(value).toEqual().

用法

¥Usage

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

参数

¥Arguments

属性的路径。使用点符号 a.b 检查嵌套属性,使用索引 a[2] 符号检查嵌套数组项。

¥Path to the property. Use dot notation a.b to check nested properties and indexed a[2] notation to check nested array items.

用于与属性进行比较的可选预期值。

¥Optional expected value to compare the property to.


toMatch

Added in: v1.9 genericAssertions.toMatch

确保字符串值与正则表达式匹配。

¥Ensures that string value matches a regular expression.

用法

¥Usage

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

参数

¥Arguments

要匹配的正则表达式。

¥Regular expression to match against.


toMatchObject

Added in: v1.9 genericAssertions.toMatchObject

将值的内容与 expected 的内容进行比较,执行 "深度平等" 检查。与 expect(value).toEqual() 不同,允许值中存在额外的属性,因此你可以仅检查对象属性的子集。

¥Compares contents of the value with contents of expected, performing "deep equality" check. Allows extra properties to be present in the value, unlike expect(value).toEqual(), so you can check just a subset of object properties.

比较数组时,项目数必须匹配,并且递归检查每个项目。

¥When comparing arrays, the number of items must match, and each item is checked recursively.

用法

¥Usage

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 }]);

参数

¥Arguments

要匹配的预期对象值。

¥The expected object value to match against.


toStrictEqual

Added in: v1.9 genericAssertions.toStrictEqual

将值的内容与 expected 的内容及其类型进行比较。

¥Compares contents of the value with contents of expected and their types.

expect(value).toEqual() 的区别:

¥Differences from expect(value).toEqual():

  • 检查具有未定义属性的键。例如,{ a: undefined, b: 2 }{ b: 2 } 不匹配。

    ¥Keys with undefined properties are checked. For example, { a: undefined, b: 2 } does not match { b: 2 }.

  • 检查数组稀疏性。例如,[, 1][undefined, 1] 不匹配。

    ¥Array sparseness is checked. For example, [, 1] does not match [undefined, 1].

  • 检查对象类型是否相等。例如,具有字段 ab 的类实例不等于具有字段 ab 的字面量对象。

    ¥Object types are checked to be equal. For example, a class instance with fields a and b will not equal a literal object with fields a and b.

用法

¥Usage

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

参数

¥Arguments

期望值。

¥Expected value.


toThrow

Added in: v1.9 genericAssertions.toThrow

调用该函数并确保它抛出错误。

¥Calls the function and ensures it throws an error.

(可选)将错误与 expected 进行比较。允许的期望值:

¥Optionally compares the error with expected. Allowed expected values:

  • 正则表达式 - 错误消息应该与模式匹配。

    ¥Regular expression - error message should match the pattern.

  • 字符串 - 错误消息应包含子字符串。

    ¥String - error message should include the substring.

  • 错误对象 - 错误消息应该等于对象的消息属性。

    ¥Error object - error message should be equal to the message property of the object.

  • 错误等级 - 错误对象应该是该类的实例。

    ¥Error class - error object should be an instance of the class.

用法

¥Usage

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

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

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

参数

¥Arguments

预期的错误消息或错误对象。

¥Expected error message or error object.


toThrowError

Added in: v1.9 genericAssertions.toThrowError

expect(value).toThrow() 的别名。

¥An alias for expect(value).toThrow().

用法

¥Usage

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

参数

¥Arguments

预期的错误消息或错误对象。

¥Expected error message or error object.


属性

¥Properties

not

Added in: v1.9 genericAssertions.not

使断言检查相反的条件。例如,以下代码通过:

¥Makes the assertion check for the opposite condition. For example, the following code passes:

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

用法

¥Usage

expect(value).not

类型

¥Type