On this page
@std/expect
Overview Jump to heading
This module provides Jest compatible expect assertion functionality.
import { expect } from "@std/expect"; const x = 6 * 7; expect(x).toEqual(42); expect(x).not.toEqual(0); await expect(Promise.resolve(x)).resolves.toEqual(42); Currently this module supports the following functions:
- Common matchers:
toBetoEqualtoStrictEqualtoMatchtoMatchObjecttoBeDefinedtoBeUndefinedtoBeNulltoBeNaNtoBeTruthytoBeFalsytoContaintoContainEqualtoHaveLengthtoBeGreaterThantoBeGreaterThanOrEqualtoBeLessThantoBeLessThanOrEqualtoBeCloseTotoBeInstanceOftoThrowtoHaveProperty
- Mock related matchers:
toHaveBeenCalledtoHaveBeenCalledTimestoHaveBeenCalledWithtoHaveBeenLastCalledWithtoHaveBeenNthCalledWithtoHaveReturnedtoHaveReturnedTimestoHaveReturnedWithtoHaveLastReturnedWithtoHaveNthReturnedWith
- Asymmetric matchers:
- Utilities:
expect.addSnapshotSerializerexpect.assertionsexpect.addEqualityTesterexpect.extendexpect.hasAssertions
Only these functions are still not available:
- Matchers:
toMatchSnapshottoMatchInlineSnapshottoThrowErrorMatchingSnapshottoThrowErrorMatchingInlineSnapshot
The tracking issue to add support for unsupported parts of the API is https://github.com/denoland/std/issues/3964.
This module is largely inspired by x/expect module by Allain Lalonde.
Add to your project Jump to heading
deno add jsr:@std/expect See all symbols in @std/expect on
What is expect? Jump to heading
A Jest‑compatible fluent assertion API. Instead of standalone assert functions, you write expectations like expect(value).toBe(1) and can chain modifiers like .not, .resolves, and .rejects.
When to use @std/expect Jump to heading
If you prefer a Jest-like API for fluent, readable assertions with rich matchers, especially when migrating from Jest.
Examples Jump to heading
import { expect } from "@std/expect"; expect({ a: 1, b: 2 }).toMatchObject({ a: 1 }); await expect(Promise.resolve(42)).resolves.toBe(42); expect([1, 2, 3]).toContain(2); // Throwing and async rejections expect(() => JSON.parse("{")) .toThrow(SyntaxError); await expect(Promise.reject(new Error("boom"))) .rejects.toThrow("boom"); // Close-to for floating point, regex matching expect(0.1 + 0.2).toBeCloseTo(0.3, 15); expect("hello world").toMatch(/world/); // Using asymmetric matchers expect({ id: 1, name: "Ada" }) .toEqual(expect.objectContaining({ name: expect.stringMatching(/^A/) })); Use with Deno.test Jump to heading
import { expect } from "@std/expect"; Deno.test("basic expect", () => { const value = 2 + 2; expect(value).toBe(4); }); For more information on testing in Deno, see the testing docs.
Tips Jump to heading
- Use
toEqualfor deep data comparisons andtoBefor identity. - Prefer
.resolves/.rejectshelpers for promises. - Prefer
.resolves/.rejectshelpers for promises. - Use
toStrictEqualfor stricter deep checks (no extra props, etc.). - Extend with custom matchers via
expect.extendwhen needed.