This minor release adds matchers for iterables and records (i.e. dictionary objects where all values are the same type).
toBeIterableOf
,toBeStrictIterableOf
,expect.iterableOf
, expect.strictIterableOf
These matchers check that all the values in an iterable match a given value, using deep (and strict where applicable) equality.
For example, to check every value in an array is a number:
expect([1, 2, 3]).toBeIterableOf(expect.typeOf("number")); // or expect.any(Number)
toBeRecordOf
, toBeStrictRecordOf
, expect.recordOf
, expect.strictRecordOf
These matchers check that all values in an object match a given value, using deep (and strict where applicable) equality.
For example, to check every value in an object is a number:
expect({ a: 1, b: 2, c: 3 }).toBeRecordOf(expect.typeOf("number")); // or expect.any(Number)
Optionally, you can pass two expected values, and the first will be used to check the key instead.
expect({ a: 1, b: 2, c: 3 }).toBeRecordOf(
expect.oneOf(["a", "b", "c"]),
expect.typeOf("number"),
);
Note that only enumerable string keys are checked, as the matcher iterates using Object.entries
.
The naming of this matcher comes from Typescript's Record
type.