test
History
tags option.skip, todo, and only shorthands.signal option.timeout option.test(name?, options?, fn?): Promise
stringname property of fn, or '<anonymous>' if fn
does not have a name.Objecttrue, all scheduled asynchronous tests run concurrently within the
thread. If false, only one test runs at a time.
If unspecified, subtests inherit this value from their parent.
Default: false.RegExp | Function | Object | Error
is provided directly (without wrapping in { match: … }), the test passes
only if the thrown error matches, following the behavior of
assert.throws. To provide both a reason and validation, pass an object
with label (string) and match (RegExp, Function, Object, or Error).
Default: false.booleanonly tests, then this test will be run. Otherwise, the test is skipped.
Default: false.AbortSignalfalse.string[]--experimental-test-tag-filter to filter which
tests run. Tags inherit from suites to nested tests by union. See
Test tags. Default: [].TODO. If a string
is provided, that string is displayed in the test results as the reason why
the test is TODO. Default: false.numberInfinity.numberundefined.Function | AsyncFunctionfn parameter.stringname parameter.Function | AsyncFunctionTestContext object. If the test uses callbacks,
the callback function is passed as the second argument. Default: A no-op
function.Promiseundefined once
the test completes, or immediately if the test runs within a suite.The test() function is the value imported from the test module. Each
invocation of this function results in reporting the test to the TestsStream.
The TestContext object passed to the fn argument can be used to perform
actions related to the current test. Examples include skipping the test, adding
additional diagnostic information, or creating subtests.
test() returns a Promise that fulfills once the test completes.
if test() is called within a suite, it fulfills immediately.
The return value can usually be discarded for top level tests.
However, the return value from subtests should be used to prevent the parent
test from finishing first and cancelling the subtest
as shown in the following example.
test('top level test', async (t) => { // The setTimeout() in the following subtest would cause it to outlive its // parent test if 'await' is removed on the next line. Once the parent test // completes, it will cancel any outstanding subtests. await t.test('longer running subtest', async (t) => { return new Promise((resolve, reject) => { setTimeout(resolve, 1000); }); }); });
The timeout option can be used to fail the test if it takes longer than
timeout milliseconds to complete. However, it is not a reliable mechanism for
canceling tests because a running test might block the application thread and
thus prevent the scheduled cancellation.