Additional Globals

Explore the tools that Jest provides to help write and run our tests as efficiently as possible.

Looking deeper into Jest globals

To help with writing and running our tests efficiently, Jest provides several additional globals that we can use. These globals allow us to do things like iterate over test cases and run only the test we are working on.

Additional functionality of describe

  • describe.each(table)(name, fn, timeout)helps to abstract repetitive testing logic that just needs to be run with multiple data sets. Thetable argument is an array of arrays representing the data to pass to the anonymous function (fn`) and ultimately for us to use in our individual tests. The name is still the descriptor for the test suite, i.e., function or component name, and we have an optional timeout again.

  • describe.only(name, fn) tells Jest to run only this describe block. If a test file has multiple describe blocks and we are working on or debugging only one, running all test suites in the file every time is unnecessarily time-consuming. We can use describe.only to avoid this.

  • describe.only.each(table)(name, fn) has the benefits of both the functions above, enabling us to run only the test suite with the dataset we want to pass the function in.

  • describe.skip(name, fn) is the opposite of describe.only, specifying a test suite that we do not want to run.

  • describe.skip.each(table)(name, fn) is the opposite of describe.only.each, specifying a test suite and the corresponding dataset that we do not want to run.

Examples

Examples of each of these are included below. If you run the test file, you’ll see that only the blocks with describe.only and describe.only.each actually run. This is expected given their functionality. Examples of each are still included to show how they should be used. Feel free to comment out the .only tests to see the others in action:

Get hands-on with 1400+ tech skills courses.